我需要有关 RegEx 问题的帮助:
我想找到两个已知单词(例如“foo”和“bar”)的出现,它们之间有任何空格而不是完全一个空格字符。
在我必须 grep 的文本中,两个单词之间可能有空格、制表符、CR、LF 或它们的任意组合。
在正则表达式中:
我需要一个匹配 "foo[ \t\n\r]+bar"
的正则表达式但不匹配 "foo bar"
.
到目前为止我尝试过的所有东西要么错过了一些组合,要么也匹配了唯一不匹配的单空格案例。
在此先感谢您提供任何解决方案。
编辑:为了澄清,我在这里使用 Perl 兼容的 RegEx。
最佳答案
您还可以使用负前瞻:
foo(?! \b)\s+bar
如果不支持前瞻,您可以明确地编写它:
foo(?:[^\S ]| \s)\s*bar
表达式
[^\S ]
包括双重否定,它的工作原理可能不是很明显。如果你计算出逻辑,它意味着除了空格之外的任何空格。
关于RegEx 用于查找单词之间只有一个空格的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3456954/