在Java中,当执行replaceAll来查找正则表达式模式时:
replaceAll("\\?i\\b(\\w+)\\b(\\s+\\1)+\\b", "$1");
Run Code Online (Sandbox Code Playgroud)
(为了删除重复的连续不区分大小写的单词,例如测试测试),我不知道我把它放在哪里?i.我读到它应该在开头,但是如果我把它取出然后我会捕获重复的连续单词(例如测试测试),但不是不区分大小写的单词(例如测试测试).所以我想我可以在开头添加?i但似乎没有完成工作.有什么想法吗?谢谢!
似乎使用一个字符类比一个例子中的交替更快,比如:
[abc]vs (a|b|c)
我听说它被推荐,并且使用Time::HiRes我验证的简单测试(慢10倍).在捕获括号产生差异的情况下
也使用(?:a|b|c)不会改变结果.
但我不明白为什么.我认为这是因为回溯,但我在每个位置看到它的方式有3个字符比较所以我不确定回溯是如何影响交替的.这是实施交替性质的结果吗?