JAVA 正则表达式

 

public static void main( String args[] ){
       String REGEX = "\\bcat\\b";
       String INPUT = "cat cat cat cattie cat";
       Pattern p = Pattern.compile(REGEX);
       Matcher m = p.matcher(INPUT); // 获取 matcher 对象
       int count = 0;
       while(m.find()) {
         count++;
         System.out.println("Match number "+ count);
         System.out.println("start(): "+ m.start());
         System.out.println("end(): "+ m.end());
         System.out.println("end(): "+ m.group());
      }
   }

 

正则表达式

.     匹配除"\r\n"之外的任何单个字符
^     开始
$     结束
*     次或多次
+     一次或多次
?     零次或一次
{n}   正好 n 次
{n,}  至少匹配 n 次
{n,m} n次(含)到m次(含)
x|y 匹配 x 或 y
[xyz]  字符集。匹配包含的任一字符。例如,"[abc]"匹配"plain"中的"a"。
[^xyz] 反向字符集。匹配未包含的任何字符。例如,"[^abc]"匹配"plain"中"p","l","i","n"。
[a-z]字符范围
[^a-z]反向范围字符
\d   数字字符匹配。等效于 [0-9]。
\D   非数字字符匹配。等效于 [^0-9]。
\f   换页符匹配。等效于 \x0c 和 \cL。
\n   换行符匹配。等效于 \x0a 和 \cJ。
\r   匹配一个回车符。等效于 \x0d 和 \cM。
\s   匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。
\S   匹配任何非空白字符。与 [^ \f\n\r\t\v] 等效。
\t   制表符匹配。与 \x09 和 \cI 等效。
\v   垂直制表符匹配。与 \x0b 和 \cK 等效。
\w   匹配任何字类字符:字母、数字和下划线。与"[A-Za-z0-9_]"等效。
\W   与任何非单词字符匹配。与"[^A-Za-z0-9_]"等效

(pattern) 匹配 pattern 并捕获该匹配的子表达式
 

String类


   boolean matches(regex)
   replaceAll(String regex, String replacement)
   replaceFirst(String regex, String replacement)
   split(String regex)

Pattern类


   Pattern p = Pattern.compile("a*b");
   Matcher m = p.matcher("aaaaab");
   boolean b = m.matches();

   或者Pattern.matches("a*b", "aaaaab")

       对于多次使用的,推荐用Pattern p = Pattern.compile("a*b");,效率高些。

       注意:Matcher不是线程安全的。

Matcher类


  Matcher.matches() 需要全部匹配
  Matcher.lookingAt() 尝试将从区域开头开始的输入序列与该模式匹配。
     注意:1.从第一个字符开始匹配
                2.部分匹配即可。

  Matcher.find()  部分匹配,匹配到的字符串可以在任何位置

  Mathcer.start()/ Matcher.end()/ Matcher.group()

    当使用matches(),lookingAt(),find()执行匹配操作后,就可以利用以上三个方法得到更详细的信息.
      start()返回匹配到的子字符串在字符串中的索引位置.
      end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.
      group()返回匹配到的子字符串

  

posted @ 2020-01-16 11:39  ~风铃~  阅读(232)  评论(0编辑  收藏  举报