数字/单词的正则表达式Python

时间:2018-03-09 17:41:03

标签: python regex

我必须在python 2.7中匹配格式的字符串 - {月份的2位数日} {确切的词de或del} {4位数年份} 并仅用
替换字符串的整个子字符串 {月份的2位数日期} {4位数年份}并删除单词de / del。 我知道单词边界(\ b),我试过这个:

s4 = "la fecha de hoy es septiembre 31 de 1958 and tom fecha septiembre 
30 de 1958"
s4 = re.sub(r'((\b\d{2}\b)[de,del](\b\d{4}\b)', "\\1 \\3", s4) 

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

[de,del]匹配以下字符之一:del,

你想使用del?(“de”,最后可能是“l”)

如果你想匹配使用\s的空格,我更喜欢使用这个而不是\b

答案 1 :(得分:0)

[de,del]与您的想法不符。此表示法用于character class。如果您想匹配dedel,可以将其写为del?

31 dede 1958之间有一个空格。您可以将其匹配为\s,或者是否有更多\s+或仅仅是空白。

我认为你不需要外部捕获组。这样,将只有2个捕获组将用于替换。

对于这场比赛,我认为您不需要单词边界\b,但如果您想保留它们,您可以将正则表达式更新为:

(\b\d{2}\b)\s+del?\s+(\b\d{4}\b)

Demo