匹配n个或更多定义的连续字符,不包括空格

时间:2016-10-12 21:31:05

标签: java regex

我想匹配任何额外的x个连续字符,不包括空格,限制为5 x

  1. xxxxx - > ∅
  2. xxxxxxxx - > xxx
  3. x x x x x - > ∅
  4. x x x x x x x x - > x x x
  5. x x x x x x x x - > x x x
  6. 基本上,这个正则表达式仅适用于1.和2.:

    ^([x]{0,5})([x ]*)
    

    如何在不计算空格的情况下允许空格?

    编辑:目标是使用Java删除额外的x

1 个答案:

答案 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或空格。