我的正则表达式是匹配的,但在使用java时它不匹配

时间:2015-04-24 11:40:53

标签: java regex

我的正则表达式:

VARCHAR2+\(+[0-9]+\)

VARCHAR2(50)匹配,但在使用java模式类匹配器执行此表达式时,它不匹配。

2 个答案:

答案 0 :(得分:1)

System.out.println("VARCHAR2(50)".matches("VARCHAR2+\\(+[0-9]+\\)"));
result: true

您需要将其设为\\

答案 1 :(得分:0)

问题在于转义特殊字符。 Java使用esteblished正则表达式语法,不幸的是Java和正则表达式使用相同的语法。

因此,Java字符串文字"VARCHAR2+\(+[0-9]+\)"表示字符序列VARCHAR2+(+[0-9]+)。在这个正则表达式中,parantheses表示分组,因此正则表达式与输入字符串不匹配。

要解决此问题,您需要两次转义特殊字符。 Java字符串文字"VARCHAR2+\\(+[0-9]+\\)"表示字符串VARCHAR2+\(+[0-9]+\),此处的parantheses被转义,因此这个正则表达式与您的输入匹配。