Python 匹配两个单引号,如果两个单引号出现在一行中或如果';,则继续匹配';出现在中间?
我正在尝试设置一个正则表达式模式匹配,它将在Python 匹配两个单引号,如果两个单引号出现在一行中或如果';,则继续匹配';出现在中间?,python,regex,python-3.x,pattern-matching,Python,Regex,Python 3.x,Pattern Matching,我正在尝试设置一个正则表达式模式匹配,它将在'hello'blah blah'hello'中匹配两次'hello',但它将匹配完整字符串'hello''hello'和完整字符串'hello',以及完整字符串'hello' 简单地说,我想在有一个单引号时开始匹配,然后继续匹配,直到遇到另一个单引号,除非紧跟其后的是另一个单引号,或者后面有一个“,在这种情况下,我希望继续匹配,直到遇到不符合这些条件的单个报价 这就是我目前必须在单引号之间匹配的值: \'[^\']*\' 我已经在这里阅读了解决方案:
'hello'blah blah'hello'
中匹配两次'hello'
,但它将匹配完整字符串'hello''hello'
和完整字符串'hello'
,以及完整字符串'hello'
简单地说,我想在有一个单引号时开始匹配,然后继续匹配,直到遇到另一个单引号,除非紧跟其后的是另一个单引号,或者后面有一个“
,在这种情况下,我希望继续匹配,直到遇到不符合这些条件的单个报价
这就是我目前必须在单引号之间匹配的值:
\'[^\']*\'
我已经在这里阅读了解决方案:但它不太适合我所寻找的,并且无法使它与中间的内容相匹配。您可以使用以下正则表达式:
('[^']+'(?:\.?'[^']+')*)
它查找一组用单引号括起来的字符,后面可选地跟一些用单引号括起来的字符集,可能前面有一个句点
如果我正确理解了您的需求,那么构建上述正则表达式就很容易了。谢谢,这非常有效!我不知道您可以通过添加一个非捕获组来继续匹配,该组具有这样的规定。@Cdhippen使用非捕获组意味着您只获得整个术语的一个匹配,而不是一组子匹配。顺便说一句,我已经修改了答案,以便在引号之间有非字母字符时可以使用。不幸的是,这会造成不同的组和完全匹配,这会让我做的有点太多。上面的Nicks答案正是我想要的
'.*?'(\.?'.*?')*