我試圖找到不包含任何「a」字符的單詞。我寫了下面的代碼,但它不起作用。我怎麼能說正則表達式「不包含」?我不能使用「^」號作爲「不」嗎?Python正則表達式選擇「不包含」單詞
import re
string2 = "asfdba12312sssdr1 12şljş1 kf"
t = re.findall(r'([^a]\w*) | \w*[^a] ', string2)
print(t)
代碼的結果是"['sfdba12312sssdr1', '12şljş1']"
我試圖找到不包含任何「a」字符的單詞。我寫了下面的代碼,但它不起作用。我怎麼能說正則表達式「不包含」?我不能使用「^」號作爲「不」嗎?Python正則表達式選擇「不包含」單詞
import re
string2 = "asfdba12312sssdr1 12şljş1 kf"
t = re.findall(r'([^a]\w*) | \w*[^a] ', string2)
print(t)
代碼的結果是"['sfdba12312sssdr1', '12şljş1']"
您需要使用Word邊界的正則表達式與re.UNICODE
標誌:
r = re.compile(ur'\b[^\Wa]+\b', re.UNICODE)
的\W
和\b
將成爲支持Unicode即可。
[^\Wa]
任何Unicode字母,數字或inderscore,但不a
匹配。添加re.I
標誌以使其不區分大小寫。
如果您不想將數字與數字進行匹配,請將\d
添加到char類:[^\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)
[^a]
是單非a
字符。 [^a]\w*
是一個單一的非a
字符,後跟任意數量的單詞字符。需要注意的是一個空間是非a
字和字的字符也可以包括a
...
最簡單,最直觀的方式在Python做,這是不使用re.findall
都:
[word for word in string2.split() if not 'a' in word]
結果爲「re.compile('\\ b [^ \\ Wa] + \\ b')」 – abidinberkay