我無法從字符串轉義雙美元用於正則表達式函數模式/匹配器。轉義美元
這是字符串的一部分:
WHERE oid_2 = $$test$$ || oid_2 = $$test2$$
,這是我一直試圖讓解附近最接近代碼:
List<String> strList = new ArrayList<String>();
Pattern pattern = Pattern.compile("\$\$.*?\$\$");
log.debug("PATTERN: "+pattern)
Matcher matcher = pattern.matcher(queryText);
while (matcher.find()) {
strList.add(matcher.group());
}
log.debug(strList)
這是調試輸出我得到
- PATTERN: $$.*?$$
- []
所以模式實際上是正確的,但在字符串中找不到佔位符。
作爲一個測試,我試圖用「XXtestXX」替換「$$ test $$」,並且一切正常。我錯過了什麼?我試過「/ $」字符串,「\\」但仍然沒有解決方案。
請參閱https://ideone.com/Olm30x –
「\\ $ \\ $。*?\\ $ \\ $」表示:美元符號後的非法字符串正文字符;解決方案:要麼轉義字面美元符號「\ $ 5」,要麼將值表達式「$ {5}」括在第7行第38列中。Pattern pattern = Pattern.compile(「\\ $ \\ $。*?\\ $ \\ $「)^ 1錯誤 – GiLA3
雖然使用Slashy字符串它的工作原理!非常感謝,我確信我已經嘗試了這個解決方案,但不知怎的,我沒有,再次感謝! – GiLA3