我想匹配任何额外的x
个连续字符,不包括空格,限制为5 x
:
xxxxx
- > ∅xxxxxxxx
- > xxx
x x x x x
- > ∅x x x x x x x x
- > x x x
x x x x x x x x
- > x x x
基本上,这个正则表达式仅适用于1.和2.:
^([x]{0,5})([x ]*)
如何在不计算空格的情况下允许空格?
编辑:目标是使用Java删除额外的x
。
答案 0 :(得分:1)
您可以将空白模式添加到非捕获组中,并将限制量词应用于此组,而不是仅在x
上:
^((?:\s*x){0,5})([x ]*)
^^^^^^^^^^^^
请参阅regex demo
当您在组上应用量词(此处为{0,5}
)时,整个序列是"重复",因为只有一个x
在组内(在其末尾),只有0到5 x
可以与它匹配,以及任意数量的空格。
<强>详情:
^
- 字符串开头((?:\s*x){0,5})
- 第1组捕获0到5个序列
\s*
- 0+ whitespaces x
- 文字x
([x ]*)
- 第2组捕获0 + x
或空格。