正则表达式

2017-10-12  本文已影响8人  wch853

语法

字符 含义
\ 将下一字符标记为特殊字符
^ 匹配开始
$ 匹配结束
* 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");
    }
上一篇 下一篇

猜你喜欢

热点阅读