.net - 如何在正则表达式中否定整个单词
问题描述
我已经使用了一点正则表达式,但现在我偶然发现了一种情况,我真的不知道该怎么做,而且我阅读的所有在线教程都没有涵盖我的情况。这个问题看起来很容易解决,而且可能很容易解决,但我还没有找到解决方案。
我需要解析一个字符串,该字符串由短字符串与布尔运算符 AND、OR 和 NOT 组合而成,允许使用括号,空格无关紧要,不区分大小写。
例如
xxxx AND (yyyy or zzzz) and not qqqq
现在我想找到所有前面有 NOT 的字符串。为此,我创建了这个正则表达式模式
"NOT\s+[\w]+"
(文字 NOT 后跟至少一个空格,后跟至少一个字母/数字。)
在上面的例子中,这会给我“不是 qqqq”。
但是,如果用户碰巧写了
xxxx AND (yyyy or zzzz) and not not qqqq
这是一个有效的字符串,那么我的模式会给我“not not”而不是“not qqqq”。
所以我需要一个正则表达式模式,它会给我“字面词不后跟空格,后跟任何字符串,但不跟空格(或字符串结尾)”。
我知道如何否定单个字符,但我没有找到任何否定整个单词的工作示例,至少当我在 regexstorm.net 中测试它时没有
我使用.NET。
解决方案
使用不区分大小写的匹配,您可以使用
\bNOT\s+(?!NOT\b)\w+
\bNOT\s+
一个单词边界,匹配 NOT 和 1+ 个空格字符(?!NOT\b)
Negativelookahead,断言NOT
不在右边\w+
匹配 1+ 个单词字符
推荐阅读
- c++ - c++字符串使用assign函数和直接使用'='改变值的区别
- java - 如何在 Java 中使用来自 Kafka 的消息,从特定偏移量开始
- javascript - 仅当数组未定义时,我如何连接数组
- python - 如何根据数据中列的 Log10 为折线图着色?
- jpa - @Inject - UserTransaction 抛出焊接错误
- javascript - Puppeteer 和动态添加的 iFrame(元素)
- r - “无法分配大小为 xxx mb 的向量”错误,似乎无法修复
- amazon-web-services - 调用 CreatePolicy 操作时出现 MalformedPolicyDocument - AWS
- angular - 将 Angular EventEmitter.emit() 作为回调传递
- python - 如何在特殊情况下省略自定义日志记录处理程序?