我是新来的正则表达式,并与re.split功能有问题。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。
感谢您的期待!
所以你想要的是* two * things:要分割';',并* remove *'''escape c来自'?;'的字符分裂后正确? – 2013-03-22 16:40:36
是的,没错。 – MaM 2013-03-22 16:42:28
因为这是两个不同的任务,所以你的方法已经是正确的了。 – 2013-03-22 16:44:43