gpt4 book ai didi

python - 匹配除某些单词之外的所有字符

转载 作者:行者123 更新时间:2023-11-30 23:21:55 25 4
gpt4 key购买 nike

过去几天我一直在学习正则表达式(同时在 python 中实现它),但还没弄清楚如何解决这个问题。

我有这种格式的文本:

FOO1 = BAR2 AND Var1
Gene3 = Gene4 >= 3
Kinase = MATH OR NOT Science
BOOP = 3

我想识别每个变量名称(例如 FOO1、BAR2、BOOP)并忽略任何逻辑运算符(例如 AND、OR、NOT)

这是我尝试的解决方案:(?!AND)(?!OR)(?!NOT)([a-zA-Z0-9]+)

我无法告诉后视将 AND、OR、NOT 识别为单词而不是一组单独的字符。

如有任何帮助,我们将不胜感激。提前致谢!

最佳答案

首先,感谢您展示您的尝试。其次,让我们尝试通过多种方式改进您的正则表达式:

  1. 您已经获得了一些不错的前瞻功能,可以将其简化为:(?!AND|OR|NOT)([a-zA-Z0-9]+)

  2. 我们真的不需要捕获组 (?!AND|OR|NOT)[a-zA-Z0-9]+

  3. 让我们添加一个字边界来防止部分匹配 (?!AND|OR|NOT)\b[a-zA-Z0-9]+

举个例子 foo AND bar作为输入:

foo AND bar
^ Checks if there is no "AND", "OR" or "NOT" literally
since there isn't, it will match foo with [a-zA-Z0-9]+

foo AND bar
^ no match

foo AND bar
^ Here it will fail because of the negative lookahead

foo AND bar
^ It will succeed because there is no "AND", "OR" or "NOT" literally

所以解决办法是添加一个wordboundary \b ,这与 (?<!\w) 相同。这意味着如果后面有单词字符,正则表达式将失败。

foo AND bar
^ fail, because there is a word character behind

foo AND bar
^^^ match

Online demo

关于python - 匹配除某些单词之外的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com