android - Android 上的 java.util.regex.PatternSyntaxException

标签 android regex

我得到一个 java.util.regex.PatternSyntaxException尝试调用 string.split() 时 使用正则表达式 (?<=}),(?=\\{)针对诸如“{test},{test}”之类的字符串

当我在 JVM(即不在 Android)上的单元测试中运行它时,这工作正常,但在 Android 上我得到以下堆栈跟踪:

  java.util.regex.PatternSyntaxException: Syntax error U_REGEX_RULE_SYNTAX near index 5:
        (?<=}),(?=\{)
        ^
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
        at android.app.ActivityThread.access$1500(ActivityThread.java:117)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:130)
        at android.app.ActivityThread.main(ActivityThread.java:3683)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:507)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: java.util.regex.PatternSyntaxException: Syntax error U_REGEX_RULE_SYNTAX near index 5:
        (?<=}),(?=\{)
        ^
        at java.util.regex.Pattern.compileImpl(Native Method)
        at java.util.regex.Pattern.compile(Pattern.java:400)
        at java.util.regex.Pattern.<init>(Pattern.java:383)
        at java.util.regex.Pattern.compile(Pattern.java:374)
        at java.lang.String.split(String.java:2021)
        at java.lang.String.split(String.java:2002)

我想知道 Android 运行时是否不支持正则表达式前瞻,任何人都可以确认这一点或提供解决此问题的任何建议吗?

最佳答案

android/java regex page表示支持 lookbehinds 并且你有正确的语法。

我不知道如何转义 {可能会导致正则表达式出现问题。你试过这种表达方式吗? string ex = "(?<=\\}),(?=\\{)";

关于android - Android 上的 java.util.regex.PatternSyntaxException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6375221/

相关文章:

java - 线程 "main"java.lang.NoClassDefFoundError : org/codehaus/jackson/JsonParseException 中的异常

java - 从应用程序邀请中获取推荐历史的选项?

android - 安卓时间选择器

正则表达式在字符串中查找单词

regex - 'optional' 量词 ('??' ) 的惰性版本在正则表达式中有用吗?

c++ - 使用 regex_replace() 时,当格式字符串中紧跟另一个数字时,反向引用子匹配的正确方法是什么?

java - Appium Android Emulator 未关闭或测试失败

android - 预编译的dex库

javascript - 带引号的正则表达式

regex - 在 CountVectorizer 上使用正则表达式删除数字和符号