Python正则表达式匹配报价

时间:2017-09-08 15:11:13

标签: python regex

我尝试匹配单词只有当要比较的单词和字符串是单引号时才这样:

foo foo #match
'foo' foo #don't match
foo 'foo' #don't match
'foo' 'foo' #match
foo 'foo #match
foo foo' #match 

我试过这个正则表达式:

((?<!')|((\')?))foo((?!')|(\W*))(?=\W\s*|$)

但输出是:

foo foo #match it's good
'foo' foo #don't match it's good
foo 'foo' #match it's not good
foo 'foo #match it's good
foo foo' #match it's good
'foo' 'foo' #match it's good

此外,如果我尝试使用这封信,所有带有此字母的字词都匹配我不想要,但如果我添加\b所有正则表达式都不起作用...

1 个答案:

答案 0 :(得分:0)

根据您提出的问题和您提出的匹配(不多也不少),下面的正则表达式将会有效。

注意:我还在正则表达式中添加了双引号(在单引号之上)。如果您不想匹配双引号"

,则可以将其删除
(?:^(['"])(\w+)\1\s+\1\2\1$)|(?:^(\w+)\s+\3$)|(?:^(\w+)\s+(?:['"]\4$|\4['"]$))

要查看正在使用的此正则表达式,请点击this链接

这也有效,而且稍短。

(?:^(['"]{0,1})(\w+)\1\s+(?:(?:(['"]{0,1})\2\1)|(?:\1\2(['"]{0,1})))$)

要查看正在使用的此正则表达式,请点击this链接