gpt4 book ai didi

Java正则表达式模式编译错误

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

我正在尝试使用以下正则表达式模式 \B@(@?\w+(?:::\w+)?)([\t]*)(\( ( (?>[^( )]+) | (?3) )*\))? 使用 java.util.regex.Pattern 但我不断收到错误索引 49 附近的未知内联修饰符\B@(@?\w+(?:::\w+)?)([\t]*)(\( ( (?>[^()]+) | (?3) )*\))? ^ 我尝试在它所提示的索引处使用 \ 字符来转义正则表达式模式,但它仍然失败。希望这里有人能帮助我完成这项工作。

这是我尝试使用它的测试字符串:

值@if(blah == 1)“已分配”@else“重新分配”@endif从boom到blah

如果我将模式放入网站正则表达式 101 中,它就可以正常工作。

最佳答案

(?3) 在 Java 中无效。正如错误消息中提到的,它被解析为“内联修饰符”,这是一种激活正则表达式其余部分的标志的方法(或直到遇到相反的 (?-X) ) ,例如 (?i) 以启用不区分大小写的搜索。没有名为 3 的标志,因此出现错误。

然而,它在某些 PCRE 实现中是有效的(最值得注意的是 in Perl,它是 PCRE 的引用实现),并且可以引用捕获组,同时可以定义递归模式。这就是它在此正则表达式中的使用方式。

重写正则表达式以与 Java 兼容需要一些不平凡的工作,思考正则表达式实现是否仍然优于没有此功能的其他代码会很有趣。

关于Java正则表达式模式编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48189725/

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