Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式,把所有字母都分出来_Regex - Fatal编程技术网

Regex 正则表达式,把所有字母都分出来

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值的反向引用(将其保留在结果中) 见: 使用正则表达式进行数据验证

我有一种情况,我只需要数字和破折号,比如 2007-24. 我知道如何用正则表达式替换数字,但是 除了数字之间的破折号外,您如何正则化所有字母表

输入:“已关闭的ORD编号2007-24”

你可以用

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

正则表达式详细信息

  • (\d+-\d+
    -第1组:一个或多个数字,
    -
    ,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