我有以下正则表达式
(?:(?:zero|one|two|three|four|five|six|seven|eight|nine|\[0-9\])\s*){4,}
如您所见,它将数字与空格匹配。
问题
如何阻止它匹配最终的空格字符?
例如:
1 2 3 4 5<whitespace>
应该是:
1 2 3 4 5
答案 0 :(得分:2)
你编写正则表达式的方式,尾随空格将始终是匹配的一部分,并且没有办法摆脱它们。您需要重写模式,重复组内的数字匹配部分,您需要分配限制量词,并减少最小值。
示意图,它看起来像
<NUMPATTERN>(?:\s+<NUMPATTERN>){3,}
请参阅regex demo。
在PCRE和Ruby中,您可以使用(?n)
语法重复捕获组模式(以缩短模式):
(zero|one|two|three|four|five|six|seven|eight|nine|[0-9])(?:\s+\g<1>){3,}
请参阅regex demo