我正在尝试创建一个匹配字符串的正则表达式,无论它们之间是否有空格。例如,如果有ABC
,我希望它匹配,还有A BC
,A B C
或AB C
。我尝试过像A\s?B\s?C\s?
那样的东西,但它没有用,我显然做错了什么。我可以为每种可能性制作一个正则表达式,但这会弄乱我的代码,我想避免这种情况。如果有人能指出我正确的方向,我会很感激。
答案 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
但是, \s
会匹配新行,因此\s
的任何内容都会匹配A\nB\nC
,这可能是不可取的。
如果要限制空格或制表符,请定义字符类:
^A[ \t]{0,1}B[ \t]{0,1}C
如果您希望ABC之间有无限的空格,请使用*
进行上一场比赛(或使用{0,}
)
答案 2 :(得分:2)
使用此解决方案([a-z] ?)+[a-z]
,您可以匹配由最多一个空格分隔的字符,可选。如果您可以容忍尾随空格,请转到([a-z] ?)+
。