java - 正则表达式在常规 java 应用程序和 android 应用程序之间的处理方式不同吗?
问题描述
我刚刚尝试在我的一个 android 项目(android 9)中使用 picocli。有关 picocli 的更多信息,请参见此处。我之前在本地项目中尝试过 picocli(仅使用 main 方法,不使用 android)并且效果很好。
但是后来我修改了代码以使其在 android 应用程序中工作,并且在处理一些正则表达式时在 picocli 中出现异常,我进行了一些测试以弄清楚发生了什么。当我尝试运行此代码时:
String test = "test";
test.replaceAll("\\$\\{COMMAND-NAME}", "string replacement");
- 如果它是经典的 java 应用程序:没问题。
- 如果它在 android 应用程序内部:发生此异常:
2020-02-06 10:31:46.409 3971-3971/? W/System.err: java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 17
2020-02-06 10:31:46.409 3971-3971/? W/System.err: \$\{COMMAND-NAME}
2020-02-06 10:31:46.409 3971-3971/? W/System.err: ^
2020-02-06 10:31:46.410 3971-3971/? W/System.err: at java.util.regex.Pattern.compileImpl(Native Method)
2020-02-06 10:31:46.410 3971-3971/? W/System.err: at java.util.regex.Pattern.compile(Pattern.java:1344)
2020-02-06 10:31:46.411 3971-3971/? W/System.err: at java.util.regex.Pattern.<init>(Pattern.java:1328)
2020-02-06 10:31:46.411 3971-3971/? W/System.err: at java.util.regex.Pattern.compile(Pattern.java:950)
2020-02-06 10:31:46.411 3971-3971/? W/System.err: at java.lang.String.replaceAll(String.java:2286)
2020-02-06 10:31:46.411 3971-3971/? W/System.err: at com.irdeto.androidadmintool.MainActivity.onCreate(MainActivity.java:39)
2020-02-06 10:31:46.411 3971-3971/? W/System.err: at android.app.Activity.performCreate(Activity.java:7136)
2020-02-06 10:31:46.411 3971-3971/? W/System.err: at android.app.Activity.performCreate(Activity.java:7127)
2020-02-06 10:31:46.411 3971-3971/? W/System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
2020-02-06 10:31:46.411 3971-3971/? W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
2020-02-06 10:31:46.412 3971-3971/? W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
2020-02-06 10:31:46.412 3971-3971/? W/System.err: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
2020-02-06 10:31:46.412 3971-3971/? W/System.err: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
2020-02-06 10:31:46.412 3971-3971/? W/System.err: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
2020-02-06 10:31:46.412 3971-3971/? W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
2020-02-06 10:31:46.412 3971-3971/? W/System.err: at android.os.Handler.dispatchMessage(Handler.java:106)
2020-02-06 10:31:46.413 3971-3971/? W/System.err: at android.os.Looper.loop(Looper.java:193)
2020-02-06 10:31:46.413 3971-3971/? W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6669)
2020-02-06 10:31:46.413 3971-3971/? W/System.err: at java.lang.reflect.Method.invoke(Native Method)
2020-02-06 10:31:46.413 3971-3971/? W/System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
2020-02-06 10:31:46.413 3971-3971/? W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
这里有什么问题?我错过了什么吗?
解决方案
推荐阅读
- java - Intellij IDEA 社区中使用 Workday Extend 的插件出现 IDE 致命错误但显示 java 错误?
- php - 如何将 CURL 转换为 Guzzle HTTP?
- typescript - 如何将使用一个数据集的工具提示添加到使用 d3 中的另一个数据集的图表中
- vba - 当计数器在表中命中 0 时循环遍历 MS-Access 中的表
- mysql - MySQL 意外关闭 xampp 。这可能是由于端口阻塞 有人可以帮忙,以便我可以开始使用 xampp 服务器吗?
- asp.net - 在 Dockerfile 中安装 microsoft-net-sdk-blazorwebassembly-aot 时出错
- r - 减少绘图 X 标签中的距离(R:ggplot2)
- css - React 插件,如何确保网站样式不会覆盖我的样式
- javascript - 在 localhost 上运行的网站无法找到 js 文件
- r - 在 r 4.0.0 之前安装了 purr 包的错误 purr 包或命名空间加载失败