Python正则表达式选择“不包括”单词

2024-10-03 04:37:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在字符串中查找不包含任何“a”字符的单词。我写了下面的代码,但它不起作用。我怎么能对regex说“不包括”?我不能用“^”号来表示“不”?在

import re
string2 = "asfdba12312sssdr1 12şljş1 kf"
t = re.findall(r'([^a]\w*) | \w*[^a] ', string2 )
print(t)

该代码的结果是"['sfdba12312sssdr1', '12şljş1']"


Tags: 字符串代码importre字符单词regexprint
2条回答

[^a]是单个非a字符。[^a]\w*是单个非a字符,后跟任意数量的单词字符。注意,空格是非a字符,单词字符也可以包括a。。。在

在Python中最简单、最直观的方法是根本不使用re.findall

[word for word in string2.split() if not 'a' in word]

您需要使用带有re.UNICODE标志的单词边界的正则表达式:

r = re.compile(ur'\b[^\Wa]+\b', re.UNICODE)

\W和{}将支持Unicode。在

参见regex demo

[^\Wa]匹配任何Unicode字母、数字或inderscore,但不匹配a。添加一个re.I标志使其不区分大小写。在

如果不想将单词与数字匹配,请将\d添加到char类:[^\W\da]。在

参见Python demo

^{pr2}$

相关问题 更多 >