Java 匹配n个或多个定义的连续字符,不包括空格
我想匹配任何额外的Java 匹配n个或多个定义的连续字符,不包括空格,java,regex,Java,Regex,我想匹配任何额外的x连续字符,不包括空格,限制为5x: xxxxx->∅ xxxxxxxx->xxx xx->∅ x x x x x->x x x x x x x->x x 所以基本上,这个正则表达式只适用于1。和2.: ^([x]{0,5})([x ]*) 如何允许空间,而不计算它们 编辑:目标是使用Java删除额外的x。您可以在非捕获组中添加空白模式,并对该组应用限制量词,而不是仅在x上: ^((?:\s*x){0,5})([x ]*) ^^^^^^^^^^^^ 见 当您在一个组上
x
连续字符,不包括空格,限制为5x
:
xxxxx
->∅李>
xxxxxxxx
->xxx
xx
->∅李>
x x x x x
->x x
x x x x x
->x x
^([x]{0,5})([x ]*)
如何允许空间,而不计算它们
编辑:目标是使用Java删除额外的
x
。您可以在非捕获组中添加空白模式,并对该组应用限制量词,而不是仅在x
上:
^((?:\s*x){0,5})([x ]*)
^^^^^^^^^^^^
见
当您在一个组上应用一个量词(这里是{0,5}
)时,整个序列都是“重复的”,并且由于组内(在其末端)只有一个x
,因此只能匹配0到5个x
,并且可以匹配任意数量的空白
详细信息:
-字符串的开头^
-第1组捕获0到5个((?:\s*x){0,5})
-0+空格\s*
-文本x
x
-第2组捕获0+([x]*)
或空格x
^((?:\s*x){0,5})([>]*)
您使用的是什么语言?仅仅使用普通的字符串操作可能有更简单的方法。目标是使用Java(我编辑了这个问题)删除额外的x
。在#2中,为什么只有3个x
s?∅代码>的意思是不要做任何事情,因为他们已经有5个了?谢谢@WiktorStribiżew,你的解决方案有效!(注意,在第二组中是x
,而不是
,我编辑了我的正则表达式)。你能把它作为一个答案贴出来并简要解释一下它是如何工作的吗?