如何通过python正则表达式排除某些字符进行提取

如何通过python正则表达式排除某些字符进行提取,python,regex,Python,Regex,我一直在使用python正则表达式来提取地址模式。 例如,我有一个添加列表,如下所示: 12buixuongtrach 34btrannhatduat 25bachmai 78bhoangquocviet 我想对地址进行如下改进: 12 buixuongtrach 34b trannhatduat 23 bachmai 78b hoangquocviet 谁能帮我一些提示代码 非常感谢您可以使用一个非常简单的正则表达式将数字从字母中分离出来,但正如人们在评论中所说的那样,无法知道这

我一直在使用python正则表达式来提取地址模式。 例如,我有一个添加列表,如下所示:

12buixuongtrach 
34btrannhatduat 
25bachmai 
78bhoangquocviet
我想对地址进行如下改进:

12 buixuongtrach
34b trannhatduat 
23 bachmai 
78b hoangquocviet
谁能帮我一些提示代码


非常感谢

您可以使用一个非常简单的正则表达式将数字从字母中分离出来,但正如人们在评论中所说的那样,无法知道这些b何时应该是数字的一部分,何时应该是文本的一部分

import re
text = """12buixuongtrach 
34btrannhatduat 
25bachmai 
78bhoangquocviet"""

unmatched = text.split()
matched = [re.sub('(\d+)(.*)', '\\1 \\2', s) for s in unmatched]
其中:

>>> matched
['12 buixuongtrach', '34 btrannhatduat', '25 bachmai', '78 bhoangquocviet']

正则表达式只是在字符串的开头抓取一个或多个数字,并将它们放入组
\1
,然后将字符串的其余部分放入组
\2
,谢谢大家的回复。我终于找到了工作。 我使用的模式如下,它就像一个魅力:)


为什么第2行和第4行中的“b”在地址上而不是在另一行上?计算机很愚蠢,我看不到任何方法来确定“b”是第2行和第4行中地址的一部分,而不是1行和第3行中地址的一部分,正则表达式似乎捕获了第三个选项的
25bac
hmai
,而不是
25
谢谢,我修复了这个模式。
'[a-zA-Z]+|[\/0-9abcd]+(?!a|u|c|h|o|e)'