java学习(一)----正则表达式

来源:互联网 发布:java redis 获取list 编辑:程序博客网 时间:2024/05/18 14:43

正则表达式:是一种规则。用来匹配当前输入的字符串是否符合特定的标准。例如验证qq号,邮箱,设置密码等。

正则表达式书写:

1、字符类:例如[abc],[ ]代表单个字符

用法:

string regex = "[abc]";System.out.println("a".matches(regex));

程序返回结果为true;

解释:[abc]为如果匹配的字符串中有abc三个字符则返回true,否则返回false。matches为用来匹配的方法。

其余字符类:(1)^[abc]除abc之外的任意字符

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

2、预定义的字符类(这里的类java中已经规定好了,直接用就好了),用法类似

(1). 任何字符。

(2) \d 数字:[0-9]
(3) \w 单词字符:[a-zA-Z_0-9]

3、数量词

(1)X? X,一次或一次也没有
(2) X* X,零次或多次
(3)X+ X,一次或多次
(4) X{n} X,恰好 n 次 
(5) X{n,} X,至少 n 次 
(6) X{n,m} X,至少 n 次,但是不超过 m 次 

用法相同:

例如:

String regex = "[abc]?";System.out.println("a".matches(regex));System.out.println("d".matches(regex));

运行结果:true,false,不在多说。

4、split方法(分割)

String s= "我.爱.你";Sting[] arr = s.split("\\.");(这里因为.带表得是任意字符,所以要加\\,转义字符,代表.,如果是其他的字符直接加就好)

遍历数组之后得到的结果为:

5、替换功能(replaceAll方法的使用)

String s = "wo1ai2ni"; String regex = "\\d";     // \\d代表任意数字System.out.println(s.replaceAll(regex,""));    //replaceAll方法有两个参数,第一个为正则字符串中匹配的值,这里指的是任意的数字,第二个为替换的值,这里为空

结果:woaini

6、Pattern和Matcher的概述

用法:

Pattern p = Pattern.compile("a*b");     //任意个a和一个b,获取pMatcher m = p.matcher("aaaaab");     //创建匹配器,里面有个字符串作为参数,看这个字符串是否能用上面的正则表达式匹配上boolean b = m.matches();                //如果匹配成功,则返回true,否则返回false

简单的例子:需求:获取字符串中的手机号码,给定字符串“我的手机号是15822536565,他的手机号是14568895465”

String s = "我的手机号是15632323333,他的手机号是14568895465";String regex = "1[34578]\\d{9}";      \\第一个1代表手机最开始的位为1,[34578]代表第二位的数字只能为这几个数字,如果是其余数字我们认为不符合手机号的标准,\\d{9}代表剩余的为任意数字,一共9位任意数字。总共为11位。Pattern p = Pattern.compile(regex);Matcher m = p.matcher(s);  while(m.find())                       //find方法为在制定字符串中找符合要求的字符串,这里找的是字符串System.out.println(m.group);   //返回找到的字符串

结果:15632323333

14568895465




原创粉丝点击