我继续使用我的正则表达式获取无效的转义序列
private String mathA = "(\d)[ + ](\d)\\s=\?";
我删除了正则表达式的每个部分,但无论我拿出什么,都不断给我同样的错误。我想匹配" 5 + 3 =?"其中5和3可以是任何数字。
答案 0 :(得分:1)
您的表达式和代码中存在一些错误。
首先,你必须用另一个反斜杠来逃避反斜杠。此外,您使用的是字符类[...]
,因此如果您有[a e aaaa]
,则只会匹配ae
。因此,[ + ]
只会匹配空格或加号。
您可以将代码更改为:
private String mathA = "(\\d) [+] (\\d)\\s=\\?";
// or escaping +
private String mathA = "(\\d) \\+ (\\d)\\s=\\?";
顺便说一句,如果你想匹配多个数字,你可以使用:
private String mathA = "(\\d+) [+] (\\d+)\\s=\\?";
答案 1 :(得分:0)
Java特别在字符串中处理字符\\
。该字符被视为转义,以允许例如将新行表示为\n
。要在字符串中获取文字反斜杠,您需要使用两个反斜杠\\\\
。
错误正在发生,因为Java看到了\\d
,并且不知道如何处理它。
还要确保\\\\
成为\\\\\\\\
以解决正则表达式使用相同转义字符获取文字反斜杠的事实。代码中的四个反斜杠=字符串中的2 =匹配中的1个字面反冲。
此外,?
不应转义,您不需要文字问号。