close
Java在Regex的支援看來不及Perl。需求如右:"FBI 34"這個字串要取得後綴字為1~2的數字,即"34",在Perl用法就很簡單:
"FBI 34" =~ /(\d{1,2})$/;
print "$1\n"; # 印出34
但用java.util.regex就顯得很…偷雞。如下:
Pattern pattern = Pattern.compile(".+(\\d{1,2})$");
Matcher matcher = pattern.matcher("FBI 34");
if (matcher.matches()) System.out.println(matcher.group(1)); // 只印出4
沒辦法做到貪多量詞。
Perl的$1是記錄Regex Pattern裡的記憶小括號的內容,即\d{1,2},對映到java.util.regex則是透過Matcher的group(index)取得。記憶小括號的index計算方式從1開始,最左邊的小括號為1,次左邊的為2,例如:
FBI (Hello (\d+)! ([Ww]elcome)) to (home|office).
則:$3是[Ww]elcome、$2是\d+,而$1則是Hello (\d+)! ([Ww]elcome),$4就是home|office。
全站熱搜
留言列表