我正在寻找一种删除所有超出特定模式匹配的字符的方法。我知道这里有很多类似的问题,但是我找不到适合我的问题。基本上,我有一个固定的模式(\ w \ w \ d \ d \ d \ d),在此之后我想删除所有内容,但要保留该模式。
我尝试使用:
test = 'PP1909dfgdfgd'
done = re.sub ('(\w\w\d\d\d\d/w*)', '\w\w\d\d\d\d/', test)
但仍然得到相同的字符串..
示例:
dirty = 'AA1001dirtydata'
dirty2 = 'AA1001222%^&*'
所需的输出:
clean = 'AA1001'
答案 0 :(得分:1)
您可以使用re.match()
代替re.sub()
:
re.match('\w\w\d\d\d\d', dirty).group(0) # returns 'AA1001'
注意:match
将在您提供的字符串的开头查找正则表达式,并且仅“匹配”与该模式对应的字符。如果要在字符串的中间找到模式,可以使用re.search()
。