我有一个(可能很复杂)RegExp 问题。从模型生成文件的工具说我的模型使用了两次名称,但没有说明这是哪个名称。我知道所有有问题的名称都以“CK_”开头,然后是一些非空格。我准备了这个测试文件:
CK_123abc
foo
CK_abc
CK_123abc
CK_199
bar
CK_177
bar
CK_188
如您所见,“CK_123abc”出现了两次。我想用 RegExp 捕捉所有这些(如果有更多的话)。到目前为止我得到了这个:(CK_\S*).+\1
这工作正常并匹配以下文本:
CK_123abc
foo
CK_abc
CK_123abc
但它也匹配
CK_199
bar
CK_177
bar
CK_1
第二个不需要的匹配是针对CK_1的。由于我的真实文档充满了这些“半字符串”匹配,因此我无法在数据中找到我的真实匹配(如这里的第一个匹配)。我认为(CK_\S*)出于某种原因不是贪婪的 - 或者整个正则表达式是贪婪的。为了使我的用例正常工作,(CK_\S*)必须首先尽可能匹配,然后应该在文档的后面找到相同的匹配。
我正在使用 Notepad++(带有 PCRE)。“。” 匹配"\r"和"\n"。
任何指针都受到高度赞赏。