请问正则表达式如何排除一个特定的单词?

2018-04-17 11:04:59 +08:00
 dwjgwsm

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) 但不成功

6307 次点击
所在节点    Python
4 条回复
xiangyuecn
2018-04-17 11:14:52 +08:00
来一发正则表达式

\b(?!max)\w+?\(.+?\)
dwjgwsm
2018-04-17 11:23:06 +08:00
@xiangyuecn 谢谢~!也可以这么写:
x=r'\([^()]*\)'

x=r'\b(?!MAX)[A-Z]+?' + x
LadyChunsKite
2018-04-17 11:26:42 +08:00
酱紫也行:[A-Z]+(?<!MAX)\(.*?\)
Hopetree
2018-04-17 11:28:34 +08:00
\s((?!MAX)[A-Z]+?\(.+?\))

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/447431

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX