Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
Regex groupValues仅返回重复模式的最后一次出现_Regex_Kotlin - Fatal编程技术网

Regex groupValues仅返回重复模式的最后一次出现

Regex groupValues仅返回重复模式的最后一次出现,regex,kotlin,Regex,Kotlin,打印[AB,B],但我希望结果是[AB,A,B] 这种行为是预期的吗 有没有办法获得[AB,a,B] 您得到的输出是预期的(A | B)+匹配并捕获A,将匹配值放入组1缓冲区,然后捕获B(当+匹配一次或多次时),并将值放入组1重新写入A内部 因此,获取所需内容的唯一方法是捕获A或B,但这并不是那么容易 看 看 它输出[AB,A,B],因为整个字符串与正则表达式匹配,值作为第一项添加,捕获1作为第二项添加,捕获2作为第三项 但是如果您有一个较长的字符串,比如123abc456def,并且您有(?

打印
[AB,B]
,但我希望结果是
[AB,A,B]

  • 这种行为是预期的吗
  • 有没有办法获得
    [AB,a,B]

    • 您得到的输出是预期的
      (A | B)+
      匹配并捕获
      A
      ,将匹配值放入组1缓冲区,然后捕获
      B
      (当
      +
      匹配一次或多次时),并将值放入组1重新写入
      A
      内部

      因此,获取所需内容的唯一方法是捕获
      A
      B
      ,但这并不是那么容易

      它输出
      [AB,A,B]
      ,因为整个字符串与正则表达式匹配,值作为第一项添加,捕获1作为第二项添加,捕获2作为第三项

      但是如果您有一个较长的字符串,比如
      123abc456def
      ,并且您有
      (?:(\d+)|(\p{L}+)+
      ,那么您就可以了。因此,对于
      123abc456def
      输入,您将获得
      [123abc456def,456,def]


      但是,如果需要匹配这些字符串,则应提供更多详细信息。

      是,应提供。但是对于
      AB
      A
      B
      ,这有点不容易。如何
      println(Regex((?:(A)|(B))+).matchIntelling(“AB”)!!.groupValues)
      ?Regex组不能捕获任意数量的匹配项,它们只“保留”最后一个匹配项。(有一些正则表达式引擎可以做到这一点,但通常正则表达式不支持。)没有正则表达式可能会更好,但在不知道程序在做什么的情况下很难说。@绘制实际正则表达式要复杂得多,所以我宁愿坚持这一点。我可能会使用Wiktor的解决方案。@WiktorStribiż您可以随意将其转换为答案。@assylias:但是如果您有
      123abc456def
      ,然后您将使用
      (?:(\d+)|(\p{L}+)+
      。。。您将只获得
      [123abc456def,456,def]
      ?看见
      println(Regex("(A|B)+").matchEntire("AB")!!.groupValues)
      
      println(Regex("(?:(A)|(B))+").matchEntire("AB")!!.groupValue‌s)