我正在尝试编写一个应该能够识别 boolean 表达式的正则表达式。
我需要避免像 IF(AND AND AND)
这样的情况。也就是说,变量的名称不应是以下运算符之一 (OR;AND;XOR)
。
我也尝试过使用 [^(OR)]
但这没有帮助。我的正则表达式如下所示:
(?:<Name> [A-Za-z0-9])
有没有机会写一个 Regex 来找到像 OR 这样的字符串然后不匹配它?
更新:
@Kobi - 我试过你的解决方案,效果很好。有没有其他方法可以做这样的事情可能是傻瓜。我想编写可读的代码
最佳答案
尝试否定前瞻:
(?<Name>\b(?!(?:and|x?or)\b)[A-Za-z0-9]+)
假设您正在尝试匹配单个文字,例如“IF(this AND this)”。正则表达式在获取字母之前进行检查,如果它看到的只是“and”、“or”或“xor”,则失败。
此外,请确保您设置了正确的 RegexOptions
- 您可能需要打开 IgnoreCase
,除非您有 IgnorePatternWhitespace
原始模式可能无法匹配,例如 if(var1
中没有空格。
关于c# - 正则表达式 c# 不应匹配 boolean 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3853595/