我需要一个 python 中的正则表达式来匹配被正好 2 个下划线包围的任何字符。 意义,意义
__a__
将匹配“a”, 但是
___a___
将不匹配。 它需要支持重叠匹配, 这样
__a__d___b___e__c__
将返回“ac” 因为 a 被双下划线包围,但是 d,e 旁边有一个三重下划线,而 b 两边都有一个三重下划线。 我现在拥有的
(?<=[_]{2})(.)(?=[_]{2})
它解决了重叠问题,但没有解决“恰好 2”问题 在上面的例子中它返回“adbec”
请您参考如下方法:
尝试以下操作:
(?<=(?<!_)__)([^_])(?=__(?!_))
例子:
>>> regex = re.compile(r'(?<=(?<!_)__)([^_])(?=__(?!_))')
>>> regex.findall('__a__ ')
['a']
>>> regex.findall('___a___')
[]
>>> regex.findall('__a__d___b___e__c__')
['a', 'c']
>>> regex.findall('__a__c__')
['a', 'c']
你说你想要重叠匹配,但如果你不希望 c 在 __a__c__ 中匹配,请使用以下内容(这是我的原始答案):
(?<!_)__([^_])__(?!_)
