對不起,如果這已被要求,我的搜索引起了許多離題主題帖子。正則表達式和轉義
我試圖從用戶定義的搜索字符串(通配符是「*」)到通配符「%」的PostgreSQL轉換通配符。
我想處理走,使得"%" => "\%"
和"\*" => "*"
我知道我可以代替\*
用別的東西代替*
之前,然後交換回來,但我不喜歡,而是隻轉換*
使用一種模式,在沒有進行\
時選擇它。
String convertWildcard(String like)
{
like = like.replaceAll("%", "\\%");
like = like.replaceAll("\\*", "%");
return like;
}
Assert.assertEquals("%", convertWildcard("*"));
Assert.assertEquals("\\%", convertWildcard("%"));
Assert.assertEquals("*", convertWildcard("\\*")); // FAIL
Assert.assertEquals("a%b", convertWildcard("a*b"));
Assert.assertEquals("a\\%b", convertWildcard("a%b"));
Assert.assertEquals("a*b", convertWildcard("a\\*b")); // FAIL
想法歡迎。
編輯
爲了澄清,
我想,使1個或多個String.replaceAll
通話將字符串轉換使
- 出現
%
成爲\%
的方法, - 發生
*
變爲%
和 - 發生的
\*
變成*
。
最佳答案將使用最少撥打電話String.replaceAll
。
中標記爲「正則表達式,文字串和反斜槓」的部分我不太瞭解這個問題。你能否澄清你想要做什麼以及問題是什麼? – cletus 2010-03-15 04:43:15