返回字符串中的Java正则表达式特殊字符

时间:2014-09-03 10:41:29

标签: java regex

我主要使用Perl进行编码,现在正在努力使用Java中的正则表达式。我有这个:

// String dbfPath = "/result_feature/Monocytes-CD14+_H3K4me3_ENCODE_UW_bwa_samse"
// rs.getString = "Monocytes-CD14+_H3K4me3_ENCODE_UW_bwa_samse"

if(! dbfPath.matches(".*" + rs.getString("rs_name") + "/*"))

我的问题是rs_name包含通配符(+)。我试着把[]放在一边,但后来我有一个非法范围( - )。

如何避免解释返回的字符串?

谢谢!

4 个答案:

答案 0 :(得分:2)

使用Pattern.quote(rs.getString("rs_name"))自动转义控制字符。

小心null s。

答案 1 :(得分:1)

您可以使用java.util.regex.Pattern.qoute()

if(! dbfPath.matches(".*" + java.util.regex.Pattern.qoute(rs.getString("rs_name") ) + "/*"))

答案 2 :(得分:0)

rs.getString()换成Pattern.quote

Pattern.quote(rs.getString("rs_name"))
  

返回指定String的文字模式String。

答案 3 :(得分:0)

您可以添加' \ Q' &安培; ' \ E'在你的字符串direclty中。

\Q  Nothing, but quotes all characters until \E
\E  Nothing, but ends quoting started by \Q





if(! dbfPath.matches(".*\\Q" + rs.getString("rs_name") + "\\E/*"))

有一件事,你应该确保你的字符串不包含' \ E'如果是,安全的方法是使用Pattern.quote()方法。