正则表达式 1、 字符 a) x字符x。如‘a’代表字符a b) \ 反斜线字符用\代表一个 c) \n换行符(‘\u000A’) d) \r回车符(‘\u000D’) 2、 字符类 a) [abc] a、b或c(简单类) b) [^abc]除了a、b、c的任何字符 c) [a-zA-Z]a到z或A到Z,两头字母包括在内 d) [0-9] 0到9的字符都包括 i. qq.matches([1-9][0-9]{4,14})代表的是第一位是取1到9,后面紧跟的至少4位最多14位取值是0到9, 最终数据是5-15位 ii. 也可以写作qq.matches([1-9]{1}[0-9]{4,14}) 3、 预定义字符类 a) . 表示任何字符。如果想表示 . 可以用 . 来表示 b) \d表示数字[0-9] 这里需要注意的是此处的\需要用\来代替。 c) \w单词字符:[a-zA-Z_0-9] i. 在正则表达式里面组成单词的东西必须由这些东西组成 4、 边界匹配器 a) ^行的开头 b) $行的结尾 c) \b单词边界:只要不是单词字符就都是单词边界 5、 数量词 a) X? X一次或一次也没有 b) X* X零次或多次 c) X+ X一次或多次 d) X{n} X恰好n次 e) X{n,} X至少n次 f) X{n,m} X至少n次,但不超过m次 6、 正则表达式的应用 a) public boolean matches(String regex)判断功能 i. 位于String类中告知此字符串是否匹配给定的正则表达式 b) public String [] split (String regex)分割功能 i. String类,根据正则表达式来匹配拆分字符串。 ii. 18-24如果想进行拆分两个数字18和24 iii. String s=”18-24” iv. String regex=”-” v. String []array=s.split(regex) vi. a=Integer.parseInt(array[0]) //18 vii. b=Integer.parseInt(array[1])//24 c) public String replaceAll(String regex,String replacement)替换功能 i. Stirng类 ii. String s=”hel123lowo456rld”;//去除字符串中的数字,变为* iii. String regex=”\d+”; iv. String ss=”” v. String result =s.replaceAll(regex,ss);//输出结果为helloworld vi. //如果想把字符串中每个数字都变为则需要修改String regex=”\d+”;将其修改为String regex=”\d”。 d) 获取功能需要使用Pattern和Matcher类(在下面实例中给出代码) i. 也可用于判断功能(但是不如上面的a方法进行判断简单) ii. Pattern p=pattern.compile(“a*b”)//将正则表达式编译成模式对象,a出现零次或多次,b出现一次。 iii. Matcher m=p.matcher(“aaaab”)//通过模式对象得到匹配对象aaaab为匹配字符串 iv. boolean b=m.matches()//b输出结果为true
正则表达式的获取功能实例
package test08_zhengdingbiaodashi; import java.util.regex.Matcher; import java.util.regex.Pattern; //功能实现获取字符串s中的长度为5的独立字符 public class Research { public static void main(String[] args) { //字符串 String s="hello world zfliu 1996 20181025 "; //正定表达式规则,因为是独立字符串此处必须要加上字符\\d以获取字符边界 String regex="\\b\\w{5}\\b"; //把规则编译成模式对象 Pattern p=Pattern.compile(regex); //通过模式对象得到匹配器对象 Matcher m=p.matcher(s); //调用匹配器功能 //创建匹配对象后可以进行三个不同的操作,每个操作都会返回以恶搞boolean值 //1、public boolean matches()方法尝试将整个输入序列与该模式匹配 //2、public boolean lookingAt()尝试将输入序列从头开始与该模式匹配,只从头开始进行一次成功匹配 //3、public boolean find()方法扫描输入序列以查找与该模式匹配的下一个子序列,从头开始可以进行多次成功匹配 //注意每次必须调用find方法之后再调用group方法得到匹配的字符 ///public String group(); while(m.find()) { String s1=m.group(); System.out.println(s1); } } }输出结果