繁体   English   中英

python regex:匹配一个正好2个字符包围的字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM