Python中如何使用正则表达式排除一个特定的单词?

python 中

data = r'test TES(1+2) MAX(3+2) AX(4+5)'

x=r'([^()]*)'

x=r'[A-Z]+' + x

b=re.findall(x,data)

print(b)

要求输出 ['TES(1+2)','AX(4+5)']

排除掉前缀为 MAX 的字符串,我尝试前面加(?!MAX) 但不成功


Python中如何使用正则表达式排除一个特定的单词?
5 回复

来一发正则表达式

\b(?!max)\w+?(.+?)


问题: 如何在正则表达式中排除一个特定的单词?
回答:
用负向先行断言 (?!...) 来排除特定单词。比如要匹配不含 "apple" 的字符串,可以这样写:

import re

pattern = r'^(?!.*apple).*$'
text = "I like oranges"
match = re.match(pattern, text)
if match:
    print("匹配成功:", match.group())

解释:

  • ^ 匹配开头,$ 匹配结尾,确保检查整个字符串。
  • (?!.*apple) 表示:从当前位置开始,后面不能出现 "apple"
  • .* 匹配剩余内容。

示例扩展:
如果想排除多个单词(比如 "apple""banana"):

pattern = r'^(?!.*(apple|banana)).*$'

一句话建议:(?!.*word) 结构实现排除匹配。

谢谢~!也可以这么写:
x=r’([^()]*)‘

x=r’\b(?!MAX)[A-Z]+?’ + x

酱紫也行:[A-Z]+(?<!MAX)(.*?)

\s((?!MAX)[A-Z]+?(.+?))

\s 表示大写字母前面的空格,(?!MAX)表示不匹配这个,[A-Z]+?表示匹配大写字母,(.+?)括号和里面的内容

回到顶部