- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
什么错误的正则表达式可能会产生有多种原因的 PatternSyntaxException? PatternSytanxException IS-A 可抛出且具有方法 .getCause()。在使应用程
在我将语言环境切换为“fa”(波斯语)之前,我有一个运行良好的正则表达式。我怀疑希伯来语和阿拉伯语也会发生这种情况(尚不确定是字符还是 RTL 方向导致它中断)。 导致异常的代码行是: public
我正在尝试验证一些只允许使用拉丁字母的输入。为此,我正在使用下一个正则表达式: public boolean isValidInput(String inputText) { return i
我不确定为什么以下代码会给我一个PatternSyntaxException: Pattern regex = Pattern.compile("\\[[12|\\[|\\|\\||\\^\\^|\\
看下面的代码: String comment = "1)FCR pick up in Hong Kong2)Local charges will be paiy in Hong Kong & in H
我已经修改了BluetoothChat 代码,以将串行数据从微 Controller 接收到我的Android 手机。当我运行以下代码 fragment 时,它给出了 java.util.regex.
所以我有这段 Java 代码: Pattern p = Pattern.compile("* bar"); Matcher m = p.matcher("foo bar"); System.out.p
我在编译正则表达式时遇到问题。我无法找到这个表达式的问题是什么,因为我从思科文档中得到了它,并且我不明白为什么它不起作用。我希望有人能告诉我它出了什么问题。这就是我正在尝试做的事情: public v
每次我尝试使用 s.split("*"); 分割字符串 "hello*world" 时,我都会得到一个 PatternSyntaxException。 我尝试使用 s.split("\*"); 但这给
这个问题在这里已经有了答案: Replace all method throws PatternSyntaxException (1 个回答) 关闭 6 年前。 我有这段代码: buffer
我不擅长正则表达式,我正在尝试使用 java.lang.String replaceAll() 方法,代码段如下 一个是: public class method3 { public stat
我正在尝试分解通过网站上的 API 获得的数组,Java 已将其作为 String 检索。 String[] ex = exampleString.split("},{"); 抛出PatternSyn
我正在尝试分解通过网站上的 API 获得的数组,Java 已将其作为 String 检索。 String[] ex = exampleString.split("},{"); 抛出PatternSyn
我正在尝试分解通过站点上的 API 获得的数组,Java 已将其检索为 String。 String[] ex = exampleString.split("},{"); PatternSyntaxE
我正在使用 json-io用于将一些 JSON 数据转换为 Java 对象: DataTransferContainer dataTransferContainer = (DataTransferCo
我正在编写一个汇编程序,用于分析汇编代码并生成目标代码。但是,我在使用正则表达式函数之一时遇到一些问题。我没有使用java正则表达式的经验,所以我不太确定我在做什么导致这个异常。下面是抛出异常的函数。
当我尝试执行 String.ReplaceAll 时,出现模式语法异常。 下面是我的字符串 Number of testcases to execute : 39? Starting execu
当我尝试执行以下代码时 text.matches("[a-zA-Z0-9 !\"#$%&'()*+,-./:;?@[\\]^_`{|}~]"); 我遇到异常 Exception in thread "
我有一个 Java 正则表达式 Pattern,由字符串末尾的一组任意字符组成,并具有正向后向查找功能。当我在 Android 之外使用 1.6 JDK 时,它编译并运行得很好,但当我将它放入 And
我需要使用 MaltParser 1.5 版本来解析俄语句子。因此,当我尝试输入 cmd 下一个命令时: java -jar malt.jar 我遇到了下一个异常: C:\malt1.5>java -
我是一名优秀的程序员,十分优秀!