正则表达式模式匹配后删除所有内容,但保留模式

时间:2018-11-08 17:50:09

标签: python regex

我正在寻找一种删除所有超出特定模式匹配的字符的方法。我知道这里有很多类似的问题,但是我找不到适合我的问题。基本上,我有一个固定的模式(\ 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'

1 个答案:

答案 0 :(得分:1)

您可以使用re.match()代替re.sub()

re.match('\w\w\d\d\d\d', dirty).group(0)  # returns 'AA1001'

注意match将在您提供的字符串的开头查找正则表达式,并且仅“匹配”与该模式对应的字符。如果要在字符串的中间找到模式,可以使用re.search()