參考:
求一個正則表達式提取中括號里的內容 [問題點數:80分]CSDN論壇 > Java > Web 開發
正則表達式 - 菜鳥教程
不包含中括號
正則表達式如下:
\\[(.*?)]
注:
.
匹配除換行符\n
之外的任何單字符;
*
匹配前面的子表達式零次或多次;
?
匹配前面的子表達式零次或一次;
()
標記一個子表達式的開始和結束位置;
\[
匹配[
字符。[
是特殊字符需要轉義;
\
特殊字符,前面還需要轉義字符\
。
包含中括號
(\\[(.*?)])
外加小括號,表示[]
也在匹配結果之內。
代碼(不包含中括號)
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpression {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String input = sc.nextLine();
String regex = "\\[(.*?)]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
}
sc.close();
}
}
樣例
ab]cd[ef]gh[ij[kl]mn[op]qr]st[uv
ef
ij[kl
op