我正在寫一個正則表達式來轉義幾個特殊字符,包括來自輸入的雙引號。當文本用雙引號括起來時,在文本中轉義特殊字符
輸入可以用雙引號括起來,這些不應該被轉義。
實施例輸入的:
"te(st", te(st, te"st
預期輸出:使用
"te\(st", te\(st, te\"st
代碼:
String regex = "^\".*\"$";
String value = "\"strin'g\"";
Pattern SPECIAL_REGEX_CHARS = Pattern.compile("[()'"\\[\\]*]");
if (Pattern.matches(regex, value)){
String val = value.substring(1, value.length() -1);
String replaceAll = SPECIAL_REGEX_CHARS.matcher(val).replaceAll("\\\\$0");
replaceAll = "\""+replaceAll+"\"";
System.out.println(replaceAll);
}else {
String replaceAll = SPECIAL_REGEX_CHARS.matcher(value).replaceAll("\\\\$0");
System.out.println(replaceAll);
}
1 - 如果文本被包含在雙引號檢查。如果是,則轉義文本中用雙引號括起來的特殊字符。
2 - 否則。在文本中轉義特殊字符。
任何可以結合#1和#2的正則表達式?
問候, 阿尼爾
可以使用1個正則表達式完成代碼。不過,這需要一些額外的代碼。 –
第三行不能編譯。 – shmosel
你能請分享正則表達式,使用條件正則表達式嗎?我想嘗試這是更好的方法。不知道我的方法是否是標準方法。 –