用于匹配锚定符和字符串的正则表达式

| 我正在尝试通过用另一个正则表达式替换另一个正则表达式在特定字符串(例如,
Token
)之前添加空格:
somethingToken
应变为
something Token
,但
something Token
应保留
something Token_
并不是
something  Token
(2个空格) 我在查找正则表达式时遇到了麻烦,该正则表达式将与非空格字符匹配,然后与Token匹配,但在匹配项中不包含非空格字符(否则也将被替换)。 一个(失败的)尝试是试图否定
\\b
锚(应该匹配单词的开头),但是我不知道是否可以否定锚。 在这方面的任何帮助表示赞赏。 谢谢。     
已邀请:
        我刚刚找到了答案,也许对其他人有用:
\\BToken 
表示否定的词边界,因此,只要标准词边界(\\ b)不匹配,就基本上匹配。在我的示例中,它确实与somethingToken匹配,但与匹配的Token没有匹配。     
        在Java中,可以通过以下方式实现:
final String text = \"fooToken foo Token\";

// Prints \'foo Token foo Token\'
System.out.println(text.replaceAll(\"(?<=\\\\S)(?=Token)\", \" \"));
这里的概念是落后的和前瞻的。有关更多信息,请参见Regex教程-零宽度断言的先行和后退。     
        
(?<!\\u0020)(?=Token)
这将在后面查找非空格,然后在Token之前查找,但没有宽度。这样,您可以用空格替换此匹配项。 编辑:如果您需要它来使用Javascript,
\\u0020?(?=Token)
将空间设置为可选,然后将其替换为没有净值变化的空间。     

要回复问题请先登录注册