Bg1*_*987 1 python regex lookahead lookbehind
我需要一个python中的正则表达式,匹配任何被2个下划线包围的字符.含义,含义
__a__
Run Code Online (Sandbox Code Playgroud)
将匹配"a",但是
___a___
Run Code Online (Sandbox Code Playgroud)
不会匹配.它需要支持重叠匹配,这样
__a__d___b___e__c__
Run Code Online (Sandbox Code Playgroud)
将返回"ac",因为a被双下划线包围,但d,e在它们旁边有一个三重奏,而b在两侧都有三重下划线.我现在有什么
(?<=[_]{2})(.)(?=[_]{2})
Run Code Online (Sandbox Code Playgroud)
它解决了重叠,但不是上面例子中的"确切2"它返回"adbec"
请尝试以下方法:
(?<=(?<!_)__)([^_])(?=__(?!_))
Run Code Online (Sandbox Code Playgroud)
例子:
>>> 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']
Run Code Online (Sandbox Code Playgroud)
你说你想要重叠匹配,但如果你不想c
匹配__a__c__
,请使用以下(这是我的原始答案):
(?<!_)__([^_])__(?!_)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
255 次 |
最近记录: |