Skip to main content
 首页 » 编程设计

Python正则表达式选择 "not include"字

2024年08月22日35birdshome

我试图在字符串中查找不包含任何“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)