我正在使用这个正则表达式
:
[Ss]([0-9]+)[][ ._-]*[Ee]([0-9]+)([^\\/]*)$
当我转换为模式
时,它抛出异常:
pattern = Pattern.compile(regExp.get(i));
05-15 11:16:06.914: E/AndroidRuntime(5268): java.util.regex.PatternSyntaxException: Missing closing bracket in character class near index 43:
05-15 11:16:06.914: E/AndroidRuntime(5268): [Ss]([0-9]+)[][ ._-]*[Ee]([0-9]+)([^\\/]*)$
05-15 11:16:06.914: E/AndroidRuntime(5268): ^
05-15 11:16:06.914: E/AndroidRuntime(5268): at java.util.regex.Pattern.compileImpl(Native Method)
05-15 11:16:06.914: E/AndroidRuntime(5268): at java.util.regex.Pattern.compile(Pattern.java:400)
05-15 11:16:06.914: E/AndroidRuntime(5268): at java.util.regex.Pattern.<init>(Pattern.java:383)
05-15 11:16:06.914: E/AndroidRuntime(5268): at java.util.regex.Pattern.compile(Pattern.java:374)
在 java 正则表达式测试器
上运行时工作正常。我相信我需要在这里转义一些字符..
最佳答案
我在这里看到 2 个问题:
- 您正在使用空字符类
[]
- 反斜杠需要更多转义
您可以使用此正则表达式:
[Ss]([0-9]+)[ ._-]*[Ee]([0-9]+)([^\\\\/]*)$
关于java - 正则表达式模式语法异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23675909/