gpt4 book ai didi

java - 在正则表达式中使用命名组会导致 "Lookbehind doesn' t 有明显的最大长度“错误

转载 作者:行者123 更新时间:2023-12-01 22:18:28 26 4
gpt4 key购买 nike

我有一些像这样的日志文件文本:

21.125.155.111 - - [01/Jan/2012:12:07:48 +0530] "GET/digital-cameras/digital-camera/sony-qx-dsc-qx100-point-shoot-digital -camera-black.html HTTP/1.1"200 1470 "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17""-"

我的模式是:

"(?<ip>[\\d\\.]+)(.+)\\\"(?<verb>\\w+) (?<address>.+) (?<protocol>[HTTPS]+)/(?<version>.+?)\\\"\\s(?<status>\\d+)\\s(?<time>\\d+)\\s\\\"(?<useragent>.*)\\\"\\s(.*)"

但是当我尝试编译该模式时,我得到了上述 PatternSyntaxException。

它在 C# 中完美运行,但在 Java 1.6 中给出异常。

最佳答案

您遇到的是一个 Java 错误,该错误会产生错误的错误消息。 Java 6 不支持命名组,因此当正则表达式编译器看到 (?< 时,它会跳出这样的结论:您正在尝试创建一个后视。它应该等到它再读取一个字符后再执行任何操作,并且如果下一个字符不是=! ,它应该抛出一个异常并提供更一般的解释,例如“未知的组构造”。

但是问题的解决方案是升级到 Java 7,或者使用老式编号组而不是命名类型。

关于java - 在正则表达式中使用命名组会导致 "Lookbehind doesn' t 有明显的最大长度“错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30465525/

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