正規表現関数/パターンマッチャーで使用する文字列から2倍のドルをエスケープするのに問題があります。ドルをエスケープする
これは、文字列の一部です:
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: $$.*?$$
- []
パターンは実際に正しいですが、プレースホルダは文字列に見つかりません。
テストとして、 "$$ test $$"を "XXtestXX"に置き換えようとしましたが、すべてが完全に機能します。私は何が欠けていますか?私は "/ $"文字列 "\\"を試しましたが、解決策はまだありません。
https://ideone.com/Olm30x –
「\\ $ \\ $。*?\\ $ \\ $」はドル記号の後の不正な文字列の本文文字を示します。解決策:リテラルドル記号 "¥$ 5"をエスケープするか、値式 "$ {5}" @行7、列38をかっこで囲みます。Pattern pattern = Pattern.compile( "\\ $ \\ $。*?\\ $ \\ $ ")^ 1エラー – GiLA3
Slashyの文字列を使用している間は動作します!ありがとう、私はその解決策を試みたと確信していたが、何とかしなかった、もう一度感謝! – GiLA3