在发布这个问题之前,我已经浏览了Regex Wiki和以下SO问题:
How To Negate Regex
How to exclude a specific string constant?
以下是我已经得到的工作,这是我想要的部分:
(?!INVALID).*$
第一篇SO文章实际上在编辑了发布的正则表达式后稍微解决了我的问题
问题是当单词以INVALID
开头时,正则表达式会失败
所以基本上:
TestINVALID
将工作TestINVALID123
将工作INVALID
将不匹配这是我想要的所以将工作- 但是
INVALIDTest
不行,不匹配
我希望正则表达式不匹配,只有当字符串完全匹配“INVALID”时才匹配
2条答案
按热度按时间vq8itlhq1#
你需要把
$
包括在你的负面展望中:这可以防止 * 整个输入 *(不仅仅是 * 前导 * 输入)是
"ÌNVALID"
。r8uurelv2#
你可能想试试tempered greedy token:
这将使以下所有操作无效,但最后一个操作除外:
请参见a demo on regex101.com并记住
multiline
标志。再次阅读你的问题,它变得不清晰。是否要匹配其中只有单词
INVALID
的行?这可以通过简单的字符串函数或来实现(如果你坚持使用正则表达式):a demo for this one on regex101.com也可以。