正则表达式,分出所有字母表

时间:2013-08-28 00:49:51

标签: regex

我有一种情况,我只需要数字和破折号,就像 2007-24。我知道如何使用正则表达式来替换数字,但是 除了数字之间的短划线外,你将如何正则表达所有字母。

输入:“CLOSED ORD NO 2007-24”

re.sub("[/-/^0-9/-]", '', self.text, flags=re.M)

1 个答案:

答案 0 :(得分:1)

您可以使用

re.sub(r'(\d+-\d+)|.', r'\1', self.text, flags=re.S)

请参见regex demo

正则表达式详细信息

  • (\d+-\d+)-第1组:一位或多位数字,-,超过1位数字
  • |-或
  • .-任意一个字符

\1是对第1组值的后向引用(以使其保留在结果中)。

请参见Python demo

import re
s = "CLOSED ORD NO 2007-24"
print( re.sub(r"(\d+-\d+)|.", r'\1', s, flags=re.S) )
# => 2007-24