正則表達式

語法

字符 含義
\ 將下一字符標記為特殊字符
^ 匹配開始
$ 匹配結束
* 0次或多次匹配前面的字符
+ 1次或多次匹配前面的字符
? 0次或1次匹配前面的字符,跟在其它限定符后匹配盡可能段的字符串(非貪心)
{n} 匹配n次
{n,} 至少匹配n次
{n,m} 匹配n~m次
(pattern) 匹配組
x|y 匹配x或y
[xyz] 字符集,匹配任一字符
[^xyz] 反向字符集,匹配不包含的字符
[a-z] 匹配小寫字母
\d 匹配數字
\n 匹配換行符
\r 匹配回車符
\s 匹配任何空白字符
\w 匹配任何字類字符

java.util.regex

Pattern

判斷是否匹配

  boolean isMatch = Pattern.matches(regex, text);
Matcher

捕獲組

  Pattern pattern = Pattern.compile(regex);
  Matcher matcher = pattern.matcher(text);
  if (matcher.find()) {
      System.out.println(matcher.group());
   } else {
      System.out.println("NOT FOUND");
  }

示例:

    // 通過()來建立分組
    String regex = "https://github\\.com/(\\w+)/(.*)";
    String text = "https://github.com/wch853/jianshu";

    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(text);
    if (matcher.find()) {
        for (int i = 0; i <= matcher.groupCount(); i++) {
            /**
             * 通過group(int group);來捕獲組
             * group(); / group(0); 捕獲所有
             * group(i)捕獲第i個分組
             */
            System.out.println("group:" + i + ": " + matcher.group(i));
        }
    } else {
        System.out.println("NOT FOUND");
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容