从字符串数组替换S子字符串-Python

时间:2019-07-07 13:26:32

标签: python regex string substring

如何使用Python从带有正则表达式的以下字符串'AA.01.001 Hello'中删除子字符串。

我尝试了以下操作,但是没有用。

array= ['AB.01.001 Hello','BA.10.004','CD.10.015 Good bye']
 regex = re.compile(r'[A-Z]{2,3}\\.[0-9]{2}\\.[0-9]{3}')
filtered = filter(lambda i: not regex.search(i), array)

Edit:

Exprected output : [`Hello`,'Good bye']

1 个答案:

答案 0 :(得分:1)

您可以使用re.sub

import re
array= ['AB.01.001 Hello','BA.10.004','CD.10.015 Good bye']
regex = re.compile(r'[A-Z]{2,3}\.[0-9]{2}\.[0-9]{3}\s*')
filtered = filter(None, map(lambda i: regex.sub('', i), array))
print(list(filtered))
# => ['Hello', 'Good bye']

请参见Python demo

请注意,我只用了一个\来转义文字点(因为您使用的是原始字符串文字来定义正则表达式),并添加了\s*来删除模式后的0或多个空格

详细信息

  • map(lambda i: regex.sub('', i), array)-遍历array项,并删除与re.sub的匹配项
  • filter(None, ...)会在模式与整个字符串匹配时删除替换产生的空项。