2024-10-03 04:37:17 发布
网友
我试图在字符串中查找不包含任何“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']"
"['sfdba12312sssdr1', '12şljş1']"
[^a]是单个非a字符。[^a]\w*是单个非a字符,后跟任意数量的单词字符。注意,空格是非a字符,单词字符也可以包括a。。。在
[^a]
a
[^a]\w*
在Python中最简单、最直观的方法是根本不使用re.findall:
re.findall
[word for word in string2.split() if not 'a' in word]
您需要使用带有re.UNICODE标志的单词边界的正则表达式:
re.UNICODE
r = re.compile(ur'\b[^\Wa]+\b', re.UNICODE)
\W和{}将支持Unicode。在
\W
参见regex demo
[^\Wa]匹配任何Unicode字母、数字或inderscore,但不匹配a。添加一个re.I标志使其不区分大小写。在
[^\Wa]
re.I
如果不想将单词与数字匹配,请将\d添加到char类:[^\W\da]。在
\d
[^\W\da]
参见Python demo:
[^a]
是单个非a
字符。[^a]\w*
是单个非a
字符,后跟任意数量的单词字符。注意,空格是非a
字符,单词字符也可以包括a
。。。在在Python中最简单、最直观的方法是根本不使用
re.findall
:您需要使用带有
re.UNICODE
标志的单词边界的正则表达式:\W
和{参见regex demo
[^\Wa]
匹配任何Unicode字母、数字或inderscore,但不匹配a
。添加一个re.I
标志使其不区分大小写。在如果不想将单词与数字匹配,请将
\d
添加到char类:[^\W\da]
。在参见Python demo:
^{pr2}$相关问题 更多 >
编程相关推荐