Regex 正则表达式,把所有字母都分出来
我有一种情况,我只需要数字和破折号,比如 2007-24. 我知道如何用正则表达式替换数字,但是 除了数字之间的破折号外,您如何正则化所有字母表 输入:“已关闭的ORD编号2007-24” 你可以用Regex 正则表达式,把所有字母都分出来,regex,Regex,我有一种情况,我只需要数字和破折号,比如 2007-24. 我知道如何用正则表达式替换数字,但是 除了数字之间的破折号外,您如何正则化所有字母表 输入:“已关闭的ORD编号2007-24” 你可以用 re.sub(r'(\d+-\d+)|.', r'\1', self.text, flags=re.S) 见 正则表达式详细信息 (\d+-\d+-第1组:一个或多个数字,-,1个以上数字 |-或 -任意一个字符 \1是对组1值的反向引用(将其保留在结果中) 见: 使用正则表达式进行数据验证
re.sub(r'(\d+-\d+)|.', r'\1', self.text, flags=re.S)
见
正则表达式详细信息
-第1组:一个或多个数字,(\d+-\d+
,1个以上数字-
-或|
-任意一个字符
\1
是对组1值的反向引用(将其保留在结果中)
见:
使用正则表达式进行数据验证的典型方法是查看它是否与模式匹配,如果不匹配则拒绝它,而不尝试修复它。如果用户在年和月之间放置字母,他们可能不明白他们想做什么,你很可能无法通过删除字母来修复任何问题。@zneak-此外-如果他们不理解这是必需的,那么你就假设猜测他们的意思-这可能是非常错误的,因此有无效/有害的数据。最好是验证,如果不正确,请他们再试一次(可能需要额外的帮助),这很简单。谢谢
re.sub(r'(\d+-\d+)|.', r'\1', self.text, flags=re.S)
import re
s = "CLOSED ORD NO 2007-24"
print( re.sub(r"(\d+-\d+)|.", r'\1', s, flags=re.S) )
# => 2007-24