Skip to main content
 首页 » 编程设计

python 正则表达式 : match a char surrounded by exactly 2 chars

2025年05月04日25dyllove98

我需要一个 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__ 中匹配,请使用以下内容(这是我的原始答案):

(?<!_)__([^_])__(?!_)