Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 匹配n个或多个定义的连续字符,不包括空格_Java_Regex - Fatal编程技术网

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
连续字符,不包括空格,限制为5
x

  • 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 ]*)
       ^^^^^^^^^^^^
    

    当您在一个组上应用一个量词(这里是
    {0,5}
    )时,整个序列都是“重复的”,并且由于组内(在其末端)只有一个
    x
    ,因此只能匹配0到5个
    x
    ,并且可以匹配任意数量的空白

    详细信息

    • ^
      -字符串的开头
    • ((?:\s*x){0,5})
      -第1组捕获0到5个
      • \s*
        -0+空格
      • x
        -文本
        x
    • ([x]*)
      -第2组捕获0+
      x
      或空格

    您的正则表达式和要求不清楚,但您可能正在寻找
    ^((?:\s*x){0,5})([>]*)
    您使用的是什么语言?仅仅使用普通的字符串操作可能有更简单的方法。目标是使用Java(我编辑了这个问题)删除额外的
    x
    。在#2中,为什么只有3个
    x
    s?
    的意思是不要做任何事情,因为他们已经有5个了?谢谢@WiktorStribiżew,你的解决方案有效!(注意,在第二组中是
    x
    ,而不是
    ,我编辑了我的正则表达式)。你能把它作为一个答案贴出来并简要解释一下它是如何工作的吗?