你的正则表达式的工作原理是这样的:
找到space
然后一个字符然后又space
,并将其删除。在这种情况下,围绕一个字符空格不能在另一个字符的测试就像在
_a_b_c
^^^ -this part matches our pattern so it will be removed leaving
b_c and now neither `b` or `c` is surrounded with spaces so they will not
be removed
情况下匹配要解决这个问题就在比赛包括一个或多个空格(字符串或者开始)和一个字符之后它就像(^|\s+)\w
一样。
此外,为了确保在此字符在leas一个空格(或字符串的结尾)之后,但未在匹配中包含此空格,可以使用look-ahead机制,如(?=\s+|$)
。
所以在Java中的情况下,尝试
String newString = yourString.replaceAll("(^|\\s+)\\w(?=\\s+|$)","");
,并在JavaScript
var replaced = text.replace(/(^|\s+)\w(?=\s+|$)/g,"")
BTW \w
将任何字符从[a-zA-Z0-9_]
匹配,所以你可以把它改成像[a-zA-Z]
,如果你只想要字母。
它应该是“玩过没有和没有”?第一个太空是故意的吗? – elclanrs
显示一些代码(你如何使用这个正则表达式)。 –
Java还是JavaScript? – nhahtdh