如何使用正则表达式检查可选空格

时间:2015-11-04 00:57:14

标签: regex whitespace

我正在尝试创建一个匹配字符串的正则表达式,无论它们之间是否有空格。例如,如果有ABC,我希望它匹配,还有A BCA B CAB C。我尝试过像A\s?B\s?C\s?那样的东西,但它没有用,我显然做错了什么。我可以为每种可能性制作一个正则表达式,但这会弄乱我的代码,我想避免这种情况。如果有人能指出我正确的方向,我会很感激。

3 个答案:

答案 0 :(得分:4)

尝试以下模式,可能有多个空格?:

A\s*B\s*C\s*

你的模式使用?这意味着它将匹配前一个字符的单个匹配或不匹配。上述模式中的*将匹配多次出现或不匹配。

答案 1 :(得分:4)

如果你想匹配0或1个空格,你可以使用{min, max} min = 0和max = 1,它与?相同:

^A\s{0,1}B\s{0,1}C

Demo

但是,

\s会匹配新行,因此\s的任何内容都会匹配A\nB\nC,这可能是不可取的。

如果要限制空格或制表符,请定义字符类:

 ^A[ \t]{0,1}B[ \t]{0,1}C

如果您希望ABC之间有无限的空格,请使用*进行上一场比赛(或使用{0,}

答案 2 :(得分:2)

使用此解决方案([a-z] ?)+[a-z],您可以匹配由最多一个空格分隔的字符,可选。如果您可以容忍尾随空格,请转到([a-z] ?)+

https://regex101.com/r/nE1mJ2/2