Regex 纯正则表达式移除空间

Regex 纯正则表达式移除空间,regex,Regex,我有一个仅通过XML配置的文档处理应用程序。我可以指定一个搜索正则表达式来查找图像上的某些内容,如果找到,则返回它。例如,要查找具有6位数字的发票号码,我要求[\d]{6},它返回该号码。非常直截了当。但是,我有一个特殊的发票号码,其中6位数字间隔开(“123456”) [\d\s]{6,12}用空格拾取字符串。如果我不查找空格,它就不匹配,因此它不会返回任何内容。Freespacing也不会返回任何内容 我已经阅读并尝试了一些其他的回答和建议,但这些建议都不起作用。我也不能写任何替换,因为我没

我有一个仅通过XML配置的文档处理应用程序。我可以指定一个搜索正则表达式来查找图像上的某些内容,如果找到,则返回它。例如,要查找具有6位数字的发票号码,我要求[\d]{6},它返回该号码。非常直截了当。但是,我有一个特殊的发票号码,其中6位数字间隔开(“123456”)

[\d\s]{6,12}
用空格拾取字符串。如果我不查找空格,它就不匹配,因此它不会返回任何内容。Freespacing也不会返回任何内容

我已经阅读并尝试了一些其他的回答和建议,但这些建议都不起作用。我也不能写任何替换,因为我没有访问代码的权限

在同一个正则表达式中搜索和替换不是有一种简单的方法吗?(我知道…这是一个搜索,因此根据定义,它与它找到的内容相匹配…只是想法不多了)

引号:
[\d\s]{6,12}
用空格拾取字符串。如果我不查找空格,它就不匹配,因此它不会返回任何内容。Freespacing也不会返回任何内容

小心,这不是设计的目的,只是巧合,它在这里工作。您还可能得到意外的匹配,例如12个空格、12个数字、4个数字和2个空格、3个数字和6个空格
{6
是量词范围的下限,
12}
是上限
\s
还包括任何空格字符,因此各种换行符、表单提要和制表符都可以作为字符串

Freespacing
完全是另一种东西,它只会使空白字符在正则表达式中变得不相关,这样您就可以以更可读的格式编写

在不知道更多的情况下,找到匹配项的最佳正则表达式可能是这个,因为它很容易阅读。您需要为此关闭
freespacing

  • (?:(\d)(\d)(\d)(\d)(\d)(\d)(\d))
    类似于引用组
    $1$2$3$4$5$6
    • 只需搜索,您就可以执行
      \d\d\d\d\d
  • 或者使用自由空间设置
    (?:(\d)[](\d)[](\d)[](\d)[](\d)[](\d))
(\d\s){6}
也将匹配您的模式——如果有尾随空格,
\s
几乎是任何
空白
字符(用于分组的括号,而不是用于字符类的方括号),但不适合替换操作


即使注释中引用的
(\d\s?{6}
)也存在允许使用6位字符串(例如
235211
)的缺陷,即使不存在空格。这是因为
在本例中表示
0或1次,尽可能多的次数。所以,如果它在那里,就抓住它,如果它不在,就忽略它。考虑到源代码的设计,这个正则表达式可以作为一个简单的查找解决方案
(?:\d\s(?:\s |$)
,其中
(?:\s |$)
意味着
空白字符,或者如果不是空白字符,则根据标志将其作为字符串/行的结尾。

正则表达式可以匹配一个2位的字符串,中间有4到10个空格:0类似
(\d\s?){6} 
?谢谢@sideroxylon,但这似乎并没有去掉空格。它将字符串返回为“1 2 3 4 5 6”。