假设句子是There are playing, they are brothers.
无论如何将标点符号分隔为单个单词,输出如下:
There are playing , they are brothers .
这对我有用:
String str = "There are playing, they are brothers.";
System.out.println(str.replaceAll("\\s*([,.?!\"'])\\s*", " $1 "));
产量:
There are playing , they are brothers .
此正则表达式将用空格替换任何可能具有前导/尾随空格的标点符号,然后是相同的标点符号和另一个空格。此块:[,.?!\"']
表示您可以更改的所有标点符号。您可以添加/删除您心中的内容。标志也可以做到这\W
一点,但它会改变一组特定的字符(任何不是字母、数字或下划线的字符)。
你可以试试正则表达式吗?
就像是:
s/(\w)([,.])/\1 \2/g
它本质上是一个非单词字符(这可能是 \W),然后是找到的标点符号,替换为第 1 组、空格、第 2 组。
我做了一个演示,可以在这里找到。