Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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 - Fatal编程技术网

正则表达式:如何匹配重叠模式(可能是特定于Python的)

正则表达式:如何匹配重叠模式(可能是特定于Python的),python,regex,Python,Regex,我有一个字符串,看起来像这样:“XaXbXcX”。我正在寻找匹配任何小写字母周围的X两边。我在Python中尝试了这一点,但我没有得到我想要的: import re str = "XaXbXcX" pattern = r'X([a-z])X' matches = re.findall(pattern, str) # gives me ['a', 'c']. What about b? 您可以使用lookback断言: pattern = r'(?<=X)([a-z])X' patter

我有一个字符串,看起来像这样:“XaXbXcX”。我正在寻找匹配任何小写字母周围的X两边。我在Python中尝试了这一点,但我没有得到我想要的:

import re
str = "XaXbXcX"
pattern = r'X([a-z])X'
matches = re.findall(pattern, str) # gives me ['a', 'c']. What about b?

您可以使用lookback断言:

pattern = r'(?<=X)([a-z])X'

pattern=r'(?我不懂python,但是我也在gskinner中测试了这个正则表达式
([^(?:X)+])+


希望这能对您有所帮助

我相信(但也可以确信),lookbehind是Python 2.7的一个特性——这并不是批评这个解决方案;如果您要使用正则表达式,这是唯一的方法。这是错误的,自Python 2.0以来,lookbehind断言就已经可用。以下模式也可以使用。
([^X])+
请尝试一下,如果有帮助请告诉我。完整的正则表达式是:
/([^(?:X)+])+//gi
您的模式匹配所有“非大写X”的字符,这与“所有小写字符两边都有X”完全不同。例如,如果传递的字符串看起来像这个XaxBxCxDxXxXxFxGGX,它将失败,因为它也将匹配字符b和g,即使它们的两侧没有X。当我选择除X以外的所有字符时,我认为您可以使用所有匹配项。无论如何,b,g都被X包围。感谢您的评论在这种情况下,您可以uld have use:re.split('X',str)。@dugres:不是真的,如果字符串看起来像xaxbxdxdeex,则模式将因返回dd和eee(以及开头和结尾的一些空字符串)而失败。