假設我有一個字符串像這樣:Python的正則表達式:XOR運算
"DT NN IN NN"
"DT RB JJ NN"
"DT JJ JJ NN"
"DT RB RB NN NN"
"DT RB RB"
所以,我有字符串列表:
list = ["DT NN IN NN", "DT RB JJ NN", "DT JJ JJ NN", "DT RB RB NN NN", "DT RB RB"]
我有以下代碼:
pattern = "(?:DT\s+)+([?:RB\s+|?:JJ\s+])+(?:NN\s+)*NN$"
for item in list:
m = re.match(pattern, item)
if m:
print item
我從pattern
要的是匹配與DT
(出現一次或多次)啓動串要麼RB
或JJ
(出現一次或多次),但不是兩次,然後以NN
(再次出現一次或多次)結束。
因此,在最終結果中,我應該在屏幕上打印3和4。然而,用我的正則表達式,除此之外,我得到2,我不想要。如何更改pattern
以便這可以工作?如何用XOR替換管道(OR)?
那麼'NN'可以重複任意次數? –
在這種情況下,不使用正則表達式會簡單得多。 –
是的,'NN'可以重複多次,但必須以至少一個'NN'結尾。 – Belphegor