正则表达式:如何匹配重叠模式(可能是特定于Python的)
我有一个字符串,看起来像这样:“XaXbXcX”。我正在寻找匹配任何小写字母周围的X两边。我在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
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(以及开头和结尾的一些空字符串)而失败。