gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 13:24:25 25 4
gpt4 key购买 nike

println(Regex("(A|B)+").matchEntire("AB")!!.groupValues)

打印 [AB, B],但我希望结果是 [AB, A, B]
  • 这是预期的行为吗?
  • 有没有办法获取[AB, A, B]
  • 最佳答案

    您得到的输出是预期的。 (A|B)+匹配并捕获A,将匹配值放入第1组缓冲区中,然后捕获B(因为+匹配一次或多次),然后将该值放入第1组中,将A重写为

    因此,获取所需内容的唯一方法是同时捕获AB,但这并不容易。

    看到

    println(Regex("(?:(A)|(B))+").matchEntire("AB")!!.groupValue‌s)

    参见 Kotlin demo

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

    但是,如果您有一个更长的字符串,例如 123abc456def,并且您有 (?:(\d+)|(\p{L}+))+,则您为 will lose all the captures but last。因此,对于 123abc456def输入,您将获得 [123abc456def, 456, def]

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

    关于regex - groupValues仅返回重复模式的最后一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44699549/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com