gpt4 book ai didi

java - 为什么我的 Android 程序中会出现 PatternSyntaxException?

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

我有一个 Java 正则表达式 Pattern,由字符串末尾的一组任意字符组成,并具有正向后向查找功能。当我在 Android 之外使用 1.6 JDK 时,它编译并运行得很好,但当我将它放入 Android 应用程序的代码中时,它会抛出 PatternSyntaxException。这是行:

Pattern namePat = Pattern.compile("(?<=DISCOVERY,\\d,[0-9A-F]{12},\\d,[+-][\\d]{3},\\d,[\\d]{4})(.*)$");

这是错误消息:

4784:D/com.example.MyTestApp.DiscoverThread( 4255): java.util.regex.PatternSyntaxException: Look-behind pattern matches must have a bounded maximum length near index 56:
4785:D/com.example.MyTestApp.DiscoverThread( 4255): (?<=DISCOVERY,\d,[0-9A-F]{12},\d,[+-][\d]{3},\d,[\d]{4})(.*)$
4786:D/com.example.MyTestApp.DiscoverThread( 4255): ^
4787:D/com.example.MyTestApp.DiscoverThread( 4255): at java.util.regex.Pattern.compileImpl(Native Method)
4788:D/com.example.MyTestApp.DiscoverThread( 4255): at java.util.regex.Pattern.compile(Pattern.java:411)
4789:D/com.example.MyTestApp.DiscoverThread( 4255): at java.util.regex.Pattern.<init>(Pattern.java:394)
4790:D/com.example.MyTestApp.DiscoverThread( 4255): at java.util.regex.Pattern.compile(Pattern.java:381)
4791:D/com.example.MyTestApp.DiscoverThread( 4255): at com.example.MyTestApp.Parser$DiscoveryParser.<init>(Parser.java:146)
4792:D/com.example.MyTestApp.DiscoverThread( 4255): at com.example.MyTestApp.DiscoverThread.run(DiscoverThread.java:61)
4793:D/com.example.MyTestApp.DiscoverThread( 4255): at java.lang.Thread.run(Thread.java:841)

据我所知,后视的长度是完全指定的。我错过了什么吗?该应用程序在 Android 4.4.2 设备上运行

最佳答案

该错误表明您的lookbehind 中的(.*) 具有可变长度,从技术上讲,这不是您的lookbehind 的一部分。我猜想有一些奇怪的事情让它认为你的后视没有关闭,并且 (.*) 是它的一部分,所以它不是固定长度的。

我会删除lookbehind,只依赖第一个捕获组:

DISCOVERY,\d,[0-9A-F]{12},\d,[+-][\d]{3},\d,[\d]{4}(.*)$

关于java - 为什么我的 Android 程序中会出现 PatternSyntaxException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23688394/

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