假设我有以下字符串:
我有以下代码:
我希望从
"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
才能使其工作?如何将管道(OR)替换为异或(XOR)?
NN
可以重复任意次数吗? - Willem Van OnsemNN
可以重复多次,但必须以至少一个NN
结尾。 - BelphegorNN
可以与例如JJ
交错使用吗?DT JJ NN JJ NN
是一个有效的字符串吗? - Willem Van Onsem