正则表达式
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);
}
}
}
输出结果