gpt4 book ai didi

java - 在没有线性搜索的情况下找出 Java 正则表达式中哪个组匹配?

转载 作者:搜寻专家 更新时间:2023-11-01 02:34:45 25 4
gpt4 key购买 nike

我有一些以编程方式组装的巨大正则表达式,就像这样

(A)|(B)|(C)|...

每个子模式都在其捕获组中。当我获得匹配项时,如何在不对每个 group(i) 进行线性测试以查看它是否返回非空字符串的情况下找出匹配的组?

最佳答案

如果您的正则表达式是以编程方式生成的,为什么不以编程方式生成 n 个单独的正则表达式并依次测试它们中的每一个?除非它们共享一个公共(public)前缀并且 Java 正则表达式引擎很聪明,否则所有替代方案都会进行测试。

更新:我刚刚查看了 Sun Java 源代码,特别是 java.util.regex.Pattern$Branch.match(),它也只是对所有备选方案进行线性搜索,依次尝试每个备选方案。使用 Branch 的其他地方不建议对公共(public)前缀进行任何类型的优化。

关于java - 在没有线性搜索的情况下找出 Java 正则表达式中哪个组匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1178678/

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