Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 匹配两个单引号,如果两个单引号出现在一行中或如果';,则继续匹配';出现在中间?_Python_Regex_Python 3.x_Pattern Matching - Fatal编程技术网

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答案正是我想要的
'.*?'(\.?'.*?')*