Python正则表达式匹配引号

Python正则表达式匹配引号,python,regex,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
'foo' foo #don't match
foo 'foo' #don't match
'foo' 'foo' #match
foo 'foo #match
foo foo' #match 
我试过这个正则表达式:

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

此外,如果我尝试使用一个字母,则所有与此字母匹配的单词都是我不想要的,但如果我添加
\b
所有正则表达式都不起作用…

根据您的问题和您建议的匹配(不多也不少),下面的正则表达式将起作用

注意:我还在正则表达式中添加了双引号(在单引号之上)。如果不想匹配双引号,可以删除它们。“

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


这个也可以,而且稍微短一点

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

要查看正在使用的这个正则表达式,请单击链接

,如果我理解正确,您希望匹配第一个和第二个单词是否相同,并且仅当两个单词(1)都被引号包围,(2)没有被引号包围,(3)时引用不完整?还有
'foo-foo
foo'foo
呢?谢谢,这就是我想要的,但是如何用findall、match或seach添加特定的单词?如果它们是:'foo'和'bar',我只想用'bar'匹配?再次感谢。我个人会在regex之外进行检查。在你的代码中进行检查。这是第二个capture组
(?:^(['"])(\w+)\1\s+\1\2\1$)|(?:^(\w+)\s+\3$)|(?:^(\w+)\s+(?:['"]\4$|\4['"]$))
(?:^(['"]{0,1})(\w+)\1\s+(?:(?:(['"]{0,1})\2\1)|(?:\1\2(['"]{0,1})))$)