簡體   English   中英

返回字符串中的Java正則表達式特殊字符

[英]Java regex special character in returned string

我主要是用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包含通配符(+)。 我嘗試將[]放在周圍,但隨后出現了非法范圍(-)。

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

謝謝!

使用Pattern.quote(rs.getString("rs_name"))自動轉義控制字符。

當心null

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

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

rs.getString()包裝在Pattern.quote

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

返回指定字符串的文字模式字符串。

您可以在字符串內容中添加“ \\ Q”和“ \\ E”。

\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()方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM