Java正则表达式

来源:互联网 发布:mac软件安装文件夹 编辑:程序博客网 时间:2024/05/21 08:46

1.定义:正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符串模式与所搜索的字符串进行匹配。

2.用途:判断手机号是否有误;IP地址是否正确;从短信内容中揪出验证码等等。

3.Java中处理正则表达式的类:

  • java.lang.String
  • java.util.regex.Pattern:模式类:字符串要被匹配的这么一个模式,该模式本身已经被编译过,使用的话效率要高很多。
  • java.util.regex.Matcher:匹配类:这个模式匹配某个字符串所产生的结果,这个结果可能会有很多个。
4.简单的语法规则:

 .              任何字符

 a?             a一次或一次也没有

 a*             a零次或多次

 a+            a一次或多次

 a{n}      a恰好 n 次

 a{n,}       a至少n次 

 a{n,m}   a至少n次,但是不超过m次

 <pre name="code" class="java">package com.demi.rx;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * Created by demi on 16/10/11. */public class RegexMatcher {        public static void main( String args[] ){            //第四个为false,其他全为true           p("abc".matches("..."));           p("".matches("a?"));           p("a".matches("a?"));           p("abc".matches("a?"));           p("aaaa".matches("a*"));           p("aaaa".matches("a+"));           p("aaaaa".matches("a{5}"));           p("aaaa".matches("a{3,}"));           p("abcaa".matches("a{1,5}..a{1,5}"));        }    public static void p(Object o){        System.out.println(o);    }}

[abc]                      ab 或 c(简单类)

[^abc]                      任何字符,除了 ab 或 c(否定)

[a-zA-Z]                   a 到 z 或 A 到 Z,两头的字母包括在内(范围)

[a-d[m-p]]                a 到 d 或 m 到 p[a-dm-p](并集)

[a-z&&[def]]             de 或 f(交集)

[a-z&&[^bc]]             a 到 z,除了 b 和 c[ad-z](减去)

[a-z&&[^m-p]]            a 到 z,而非 m 到 p[a-lq-z](减去)

//范围        p("a".matches("[abc]"));//true        p("a".matches("[^abc]"));//false        p("A".matches("[a-zA-Z]"));//true        p("A".matches("[a-z]|[A-Z]"));//true        p("A".matches("[a-z[A-Z]]"));//true        p("R".matches("[A-Z&&[RFG]]"));//true


\d                          数字:[0-9]

\D                         非数字: [^0-9]

\s                          空白字符:[ \t\n\x0B\f\r]

\S                         非空白字符:[^\s]

\w                         单词字符:[a-zA-Z_0-9]

\W                        非单词字符:[^\w]

        p("\n\r\t".matches("\\s(4)"));//false        p(" ".matches("\\S"));//false        p("a_8 ".matches("\\w(3)"));//false        p("abc888&^%".matches("[a-z]{1,3}\\d+[&^#%]+"));//true        p("\\".matches("\\\\"));//true

 ^                           行的开头

$                            行的结尾

\b                           单词边界

\B                           非单词边界

\A                           输入的开头

\G                           上一个匹配的结尾

\Z                           输入的结尾,仅用于最后的结束符(如果有的话)

\z                           输入的结尾

//边界匹配        p("hello world".matches("^h.*"));//true        p("hello world".matches(".*ld$"));//true        p("hello world".matches("^h[a-z]{1,3}o\\b.*"));//true        p("helloworld".matches("^h[a-z]{1,3}o\\b.*"));//false        //空白行:一个或多个(空白并且非换行符)开头,并以换行符结尾        p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));//true".matches(".*ir$"));//true        p("hello world".matches("^h[a-z]{1,3}o\\b.*"));//true        p("helloworld".matches("^h[a-z]{1,3}o\\b.*"));//false        //空白行:一个或多个(空白并且非换行符)开头,并以换行符结尾        p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));//true
这些语法规则,还是得靠自己去熟练掌握的。今天记着了,明天又忘了。
1 0
原创粉丝点击