我是正则表达式的新手,并且对 re.split 功能有疑问。
在我的情况下,分裂必须关心“特殊逃脱”。
文本应分隔在 处;
,除非有前导?
。
编辑:在这种情况下,不应拆分这两个部分,并且?
必须将其删除。
这是一个例子和我希望的结果:
import re
txt = 'abc;vwx?;yz;123'
re.split(r'magical pattern', txt)
['abc', 'vwx;yz', '123']
到目前为止,我尝试了这些尝试:
re.split(r'(?<!\?);', txt)
并得到:
['abc', 'vwx?;yz', '123']
可悲的是导致未消耗的?
麻烦,以下列表理解对性能至关重要:
[part.replace('?;', ';') for part in re.split(r'(?<!\?);', txt)]
['abc', 'vwx;yz', '123']
有没有一种“快速”的方法来重现这种行为?
re.findall 函数可以作为解决方案吗?
例如此代码的扩展版本:
re.findall(r'[^;]+', txt)
我正在使用 python 2.7.3。
感谢你在期待!