[英]python regex: match a char surrounded by exactly 2 chars
我需要python中的正则表达式,以匹配正好由2个下划线包围的任何char。 意思
__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__
匹配,请使用以下命令(这是我的原始答案):
(?<!_)__([^_])__(?!_)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.