我的正则表达式:
VARCHAR2+\(+[0-9]+\)
与VARCHAR2(50)
匹配,但在使用java模式类匹配器执行此表达式时,它不匹配。
答案 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被转义,因此这个正则表达式与您的输入匹配。