Regex 如何在正则表达式模式中添加多个要忽略的单词
对以下模式有何建议:Regex 如何在正则表达式模式中添加多个要忽略的单词,regex,Regex,对以下模式有何建议: ^FILE\s+(myapps.*[^build-]?(Ess\.xml)) [A-Z0-9:]*\d$ 上述模式将获得以“FILE”开头并包含“myapps”和任何字符的行,但不应包含单词“build-”或“someword”,并以“Ess.xml”结尾 我能够构建模式,但我不能添加多个要忽略的单词,即“build_uu”和“someword” 下面是一些示例: 文件myapps/abc/dfe/asd123123/sad/abcdEss.xml ABCD123:234
^FILE\s+(myapps.*[^build-]?(Ess\.xml)) [A-Z0-9:]*\d$
上述模式将获得以“FILE”开头并包含“myapps”和任何字符的行,但不应包含单词“build-”或“someword”,并以“Ess.xml”结尾
我能够构建模式,但我不能添加多个要忽略的单词,即“build_uu”和“someword”下面是一些示例:
您的正则表达式有点误导-您错误地使用了字符类。这一术语:
[build-]
是一个“字符类”,意思是“列出的任何单个字符”,这不是您想要的
满足您需求的正则表达式(作为java字符串)是:
这个正则表达式使用两个锚定的负look ahead来断言字符序列不会出现在输入中的任何地方
请参阅正确匹配的示例的标题您不希望
build-
或someword
在字符串中的任何位置,或就在fusionapps
之后?请注意,[^build-]
并不意味着“不构建”-它意味着“不是b | | u | i | | l | d |-”注意符号[^build?
是一个字符类,指定除b
、u
、i
、l
、d
或-
以外的任何字符的0或1次出现;这与“不包括build-
”有很大不同。而且做否定词充其量也很棘手。@RohitJain是的,我不想要构建词,或者其他词,你应该解释一下。“正则表达式”是一个宏大的概念;你确定这是唯一能胜任这项工作的正则表达式吗?@JonathanLeffler说得很好(还有一个很好的词“宏大”!)。一定有很多方法可以做到这一点。我更改了我的措辞a“a”正则表达式。@Bohemian是的,我需要忽略包含单词build_uu和someword的行,而不是字符b u I l d_u,但是您提供的上述正则表达式也不适用于我,因为语法错误。语法错误可能是您没有转义(即加倍)造成的将正则表达式编码为字符串时的反斜杠。我编辑了答案,将正则表达式显示为java字符串。您可以将它复制粘贴到您的程序中。@Bohemian语法错误是因为您丢失了它)最后。但后来它和小燕鸥不相配了。下面是应该匹配和不匹配的示例条目。
"^(?!.*build-)(?!.*someword)FILE\\s+fusionapps.*Ess\\.xml [A-Z0-9:]+:\\d$"