java.util.regex.PatternSyntaxException: Error de sintaxis en patrón regex cerca de índice

Mientras se divide en código inferior

String s = "12+12"; String[] sr = s.split("+"); 

Estoy recibiendo este error en logcat

 09-03 15:57:22.489: E/AndroidRuntime(22029): FATAL EXCEPTION: main 09-03 15:57:22.489: E/AndroidRuntime(22029): java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 1: 09-03 15:57:22.489: E/AndroidRuntime(22029): + 09-03 15:57:22.489: E/AndroidRuntime(22029): ^ 09-03 15:57:22.489: E/AndroidRuntime(22029): at java.util.regex.Pattern.compileImpl(Native Method) 09-03 15:57:22.489: E/AndroidRuntime(22029): at java.util.regex.Pattern.compile(Pattern.java:407) 09-03 15:57:22.489: E/AndroidRuntime(22029): at java.util.regex.Pattern.<init>(Pattern.java:390) 09-03 15:57:22.489: E/AndroidRuntime(22029): at java.util.regex.Pattern.compile(Pattern.java:381) 09-03 15:57:22.489: E/AndroidRuntime(22029): at java.lang.String.split(String.java:1832) 09-03 15:57:22.489: E/AndroidRuntime(22029): at java.lang.String.split(String.java:1813) 09-03 15:57:22.489: E/AndroidRuntime(22029): at net.telivo.fiestacancun.ui.calllog.CallLogDetailsFragment$1.onClick(CallLogDetailsFragment.java:171) 09-03 15:57:22.489: E/AndroidRuntime(22029): at android.view.View.performClick(View.java:4240) 09-03 15:57:22.489: E/AndroidRuntime(22029): at android.view.View$PerformClick.run(View.java:17721) 09-03 15:57:22.489: E/AndroidRuntime(22029): at android.os.Handler.handleCallback(Handler.java:730) 09-03 15:57:22.489: E/AndroidRuntime(22029): at android.os.Handler.dispatchMessage(Handler.java:92) 09-03 15:57:22.489: E/AndroidRuntime(22029): at android.os.Looper.loop(Looper.java:137) 09-03 15:57:22.489: E/AndroidRuntime(22029): at android.app.ActivityThread.main(ActivityThread.java:5103) 09-03 15:57:22.489: E/AndroidRuntime(22029): at java.lang.reflect.Method.invokeNative(Native Method) 09-03 15:57:22.489: E/AndroidRuntime(22029): at java.lang.reflect.Method.invoke(Method.java:525) 09-03 15:57:22.489: E/AndroidRuntime(22029): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 09-03 15:57:22.489: E/AndroidRuntime(22029): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 09-03 15:57:22.489: E/AndroidRuntime(22029): at dalvik.system.NativeStart.main(Native Method) 

4 Solutions collect form web for “java.util.regex.PatternSyntaxException: Error de sintaxis en patrón regex cerca de índice”

String#split acepta un regex .

Si no desea escapar del carácter especial + , puede utilizar Pattern#quote :

Devuelve un patrón literal Cadena para la Cadena especificada.


 String sr[] = s.split(Pattern.quote("+")); 

+ será tratado ahora como un carácter regular y no como un metacaracter.

Deberías escapar del carácter + .

 String s = "12+12"; String[] sr = s.split("\\+"); 

Escapar de un regex generalmente se hace por \ , pero en Java \ se representa como \\ .

+ debe escapar, causa + se utiliza para representar uno de los cuantificadores

debe ser s.split("\\+");

Dado que + es un carácter meta y tiene un significado especial en regex Tienes que escapar de ese carácter meta

 String s = "12+12"; String[] sr = s.split("\\+"); 

oracle docs en el mismo

  • ¿Cómo puedo crear una expresión regular para esto en android?
  • ReplaceAll no reemplaza string
  • ¿Qué significa * + en regexp
  • Android: ¿dividido en un salto de línea en String? (Párrafos)
  • Android Eclipse Utilice herramientas externas para ejecutar una secuencia de comandos en el código
  • Expresión regular en Android para el campo de contraseña
  • Android / Java Regex para eliminar ceros adicionales de sub-cadenas
  • Relacionar URI con <data> como http://example.com/algo en AndroidManifest
  • Grupos java regex con android
  • Validación de la fecha de Regex para aaaa-mm-dd
  • Diferencia de regex de Java y Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.