正则表达式
正则表达式( Regular expression)是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格式的句子。正则表达式最早源自于perl语言(脚本语言);正则表达式的功能十分强大,可以用于进行文本的匹配,检索,替换;常见于一些网络爬虫。
java中对于正则表达式的处理主要由一下三个类实现:
- java.lang.String
- java.util.regex.Pattern
- java.util.regex.Macher
简单案例:
String a = "13567845635";
//判断两个字符串是否完全一致
System.out.println(a.equals("13567845634"));
//判断当前String对象是否匹配给定的正则表达式( 匹配手机号格式字符串)
System.out.println(a.matches("^1\\d{10}$"));
匹配元字符
元字符 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
匹配长度
语法 | 说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
简单运用:
//匹配输入长度为4的数字要求必须以1开头
System.out.println("1234".matches("^1\\d{3}"));
//验证输入的是否是qq号 5-11位长度数字,不能以0开始
System.out.println("12334352324".matches("^[1-9]\\d{4,10}"));
// \\w
System.out.println("a".matches("[0-9a-zA-Z]"));
//匹配不能少于5位长度的数字
System.out.println("12387912".matches("\\d{5,}"));
//匹配不能超过6位长度的数字
System.out.println("12346".matches("\\d{0,6}"));
//匹配字母0个或多个
System.out.println("".matches("[a-zA-Z]*"));
//匹配字母1个或多个
System.out.println("a".matches("[a-zA-Z]+"));
//匹配字母0个或1个
System.out.println("ac".matches("[a-zA-Z]?"));
Pattern&Matcher
java.util.regex 包(处理正则表达式) 提供了两个用来处理正则表达式的工具类:Pattern和Matcher。Pattern用于建立待匹配的正则表达式模型,Matcher用于在匹配完成后对匹配结果进行相应操作。简单介绍一下运用。
String content = "adfasdffdiu1353457839417812341023u901223423418712312317823sdfsd";
//手机号正则表达式
String regex = "1\\d{10}";
//编译正则表达式获取匹配模式对象
Pattern p = Pattern.compile(regex);
//对指定的输入内容进行匹配并且获取匹配器
Matcher m = p.matcher(content);
//直接匹配
//System.out.println(m.matches());
//搜索是否存在匹配的组
while(m.find()) {
//取出当前匹配到的组
String s = m.group();
System.out.println(s);
}