我有一种情况,我只需要数字和破折号,就像 2007-24。我知道如何使用正则表达式来替换数字,但是 除了数字之间的短划线外,你将如何正则表达所有字母。
输入:“CLOSED ORD NO 2007-24”
re.sub("[/-/^0-9/-]", '', self.text, flags=re.M)
答案 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