2

Token我正在尝试通过用另一个正则表达式替换正则表达式来在特定字符串(例如)之前添加一个空格:somethingToken应该成为something Tokensomething Token应该保留 something Token_ 而不是 something Token(有2个空格)

我很难找到一个匹配非空格字符然后是 Token 但不包括匹配中的非空格字符的正则表达式(否则它也会被替换)。一个(失败的)尝试是试图否定一个\b锚(它应该匹配一个单词的开头),但我不知道我是否可以否定一个锚。对此的任何帮助表示赞赏。谢谢。

4

3 回答 3

3

我刚刚找到了答案,也许它对其他人有用:

\BToken 

它表示一个否定的单词边界,因此在标准单词边界 (\b) 不匹配的地方基本上匹配。对于我的示例,它确实匹配somethingToken但不匹配保留原样的something Token 。

于 2011-06-14T21:33:12.360 回答
1

在Java中,这可以实现如下:

final String text = "fooToken foo Token";

// Prints 'foo Token foo Token'
System.out.println(text.replaceAll("(?<=\\S)(?=Token)", " "));

这里的概念是向后看和向前看。有关更多信息,请参阅Regex 教程 - Lookahead 和 Lookbehind 零宽度断言

于 2011-06-14T21:43:43.140 回答
0

(?<!\u0020)(?=Token)

这将在后面寻找一个非空格,然后将向前寻找 Token,但没有宽度。这样,您可以用空格替换此匹配项。

编辑:如果您需要它在 Javascript 中工作, \u0020?(?=Token) 请将空格设为可选,然后您将用空格替换空格,而不会发生净变化。

于 2011-06-14T21:27:38.060 回答