Обрабатываются ли регулярные выражения по-разному между обычным приложением Java и приложением Android?

Я только что попытался использовать picocli в одном из своих проектов для Android (Android 9). См. здесь для получения дополнительной информации о пикокли. Раньше я пробовал picocli в локальном проекте (только с основным методом, без использования 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)

Что здесь не так? Я что-то упускаю ?


person etienne31    schedule 06.02.2020    source источник
comment
Просто избегайте }s.   -  person Wiktor Stribiżew    schedule 06.02.2020
comment
Да, я пробовал это. Я просто не понимаю, почему он работает, когда я запускаю его в обычном java-приложении.   -  person etienne31    schedule 06.02.2020