如何使用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']
答案 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, ...)
会在模式与整个字符串匹配时删除替换产生的空项。