我试图在字符串中查找不包含任何“a”字符的单词。我写了下面的代码,但它不起作用。我怎么能对正则表达式说“不包括”?我不能用“^”符号表示“不是”吗?
import re
string2 = "asfdba12312sssdr1 12şljş1 kf"
t = re.findall(r'([^a]\w*) | \w*[^a] ', string2 )
print(t)
该代码的结果是 ['sfdba12312sssdr1', '12şljş1']"
请您参考如下方法:
您需要使用带有 re.UNICODE 标志的单词边界的正则表达式:
r = re.compile(ur'\b[^\Wa]+\b', re.UNICODE)
届时 \W 和 \b 将支持 Unicode。
参见 regex demo
[^\Wa] 匹配任何 Unicode 字母、数字或下划线,但不匹配 a。添加一个 re.I 标志以使其不区分大小写。
如果不想用数字匹配单词,在char类中添加\d:[^\W\da]。
参见 Python demo :
# -*- coding: utf-8 -*-
import re
p = re.compile(ur'\b[^\Wa]+\b', re.UNICODE)
s = u"asfdba12312sssdr1 12şljş1 kf"
res = [x.encode('utf8') for x in p.findall(s)]
print(res)
