正则表达式 - 删除最后一个字符

时间:2017-04-28 17:28:57

标签: regex

我有以下正则表达式

(?:(?: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

1 个答案:

答案 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