1. 应用实例 892
1.1 例1 对字符串进行如下验证
1.汉字
2.邮政编码
要求:是1-9开头的一个六位数.比如: 123890
3.QQ号码
要求是1-9开头的一个(5位数-10位数)比如: 12389 ,1345687,187698765
4.手机号码
要求:必须以13, 14,15,18开头的11位数,比如13588889999
代码在com.stulzl.regexp10
Regexp10
package com.stulzl.regexp10;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//正则表达式的应用实例 892
public class Regexp10 {
public static void main(String[] args) {
//1.汉字
//String content = "韩顺平教育";
//String regStr = "^[\u0391-\uffe5]+$";// \u0391-\uffe5 代表汉字的范围
//2.邮政编码
//要求:是1-9开头的一个六位数.比如: 123890
//String content = "123890";
//String regStr = "^[1-9]\\d{5}$";
//3.QQ号码
//要求是1-9开头的一个(5位数-10位数)比如: 12389 ,1345687,187698765
//String content = "123890";
//String regStr = "^[1-9]\\d{4,9}$";
//4.手机号码
//要求:必须以13, 14,15,18开头的11位数,比如13588889999
String content = "13588889999";
String regStr = "^1[3|4|5|8]\\d{9}$";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
if(matcher.find()){
System.out.println("满足格式");
}else{
System.out.println("不满足格式");
}
}
}
1.2 例2 URL例题 893
代码在com.stulzl.regexp11
Regexp11
package com.stulzl.regexp11;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//正则表达式的应用实例 893
//url例题
public class Regexp11 {
public static void main(String[] args) {
//String content ="https://www.bilibili.com/video/BV1fh411y7R8?from=search&seid=1831060912083761326";
String content =
"http://edu.3dsmax.tech/yg/bilibili/my6652/pc/qg/05-51/" +
"index.html#201211-1?track_id=jMc0jn-hm-yHrNfVad37YdhOUh41XY" +
"mjlss9zocM26gspY5ArwWuxb4wYWpmh2Q7GzR7doU0wLkViEhUlO1qNtuk" +
"yAgake2jG1bTd23lR57XzV83E9bAXWkStcAh4j9Dz7a87ThGlqgdCZ2zpQy" +
"33a0SVNMfmJLSNnDzJ71TU68Rc-3PKE7VA3kYzjk4RrKU";
/**
* 思路
* 1. 先确定 url 的开始部分 https:// 或 http://
* 2.然后通过 ([\\w-]+\\.)+[\\w-]+ 例如 匹配 www.bilibili.com
* 3.匹配(\\/[\\w-?=&/%.#]*)? /video/BV1fh411y7R8?from=sear…………
*/
//解释
// ^((http|https)://)? 是以http://或者https://开头,共有部分写在括号里 ?是可能有1个也可能没有
// ([\\w-]+\\.)+[\\w-]+ \\w-代表任意的字母和 - 字符 \\.代表点(\\为了转义)
// ([\\w-]+\\.)整体代表www. 即 xx字母. [\\w-]+代表com
// (\\/[\\w-?=&/%.#]*)? \\/是转义/的意思,[\\w-?=&/%.#]是其中
// 可能有字母,数字,-,?,=,&,/,%,. ,#等字符,[]外面的*号,是代表可能没有也可能很多(即0-n)
// ()号外面的?号是com后面这部分可能有1个也可能没有
//注意:[. ? *]中括号里的特殊字符,就表示匹配它本身
String regStr = "^((http|https)://)?([\\w-]+\\.)+[\\w-]+(\\/[\\w-?=&/%.#]*)?$";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
if(matcher.find()){
System.out.println("满足格式");
}else{
System.out.println("不满足格式");
}
}
}
2. 正则表达式三个常用类 894
java.util.regex包主要包括以下三个类Pattern类、Matcher类和PatternSyntaxException(异常)
●Pattern 类
pattern对象是一个正则表达式对象。 Pattern 类没有公共构造方法。要创建一个Pattern对象,调用其公共静态方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第个参数, 比如: Patterm r= Pttern.compile(pattern);
●Matcher类
Matcher对象是对输入字符串进行解释和匹配的引擎。与Pattern 类一样, Matcher 也没有公共构造方法。你需要调用Pattern对象的matcher方法来获得一个 Matcher对象
●PatternSyntaxException
PatternSyntaxException是一个非强制异常类, 它表示一个正则表达式模式中的语法错误。
2.1 Pattern类的方法matches 即 整体匹配matches
代码在com.stulzl.regexp12
Regexp12
package com.stulzl.regexp12;
import java.util.regex.Pattern;
// Pattern类的方法matches演示整体匹配 894
//演示matches方法,用于整体匹配,在验证输入的字符串是否满足条件使用 894
public class Regexp12 {
public static void main(String[] args) {
String content = "hello abc hello, 韩顺平教育";
String regStr = "hello.*";//这里的.代表除了\n以外的任意字符,*代表前面的字符可有没有也可以有
boolean matches = Pattern.matches(regStr, content);
System.out.println("整体匹配="+matches);
}
}
2.2 Matcher类 895
代码在com.stulzl.regexp13
MatcherMethod
package com.stulzl.regexp13;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//Matcher类常用方法 895
public class MatcherMethod {
public static void main(String[] args) {
String content = "hello edu jack hspedutom hello smith hello hspedu hspedu";
String regStr = "hello";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("=================");
System.out.println(matcher.start());//返回开始匹配的索引
System.out.println(matcher.end());//返回结束匹配的索引
//解释substring()方法是截取字符串的功能
System.out.println("找到:"+content.substring(matcher.start(),matcher.end()));
}
//整体匹配,常用与校验某个字符串是否满足某个规则
System.out.println("整体匹配="+matcher.matches());//false
//完成如果 content 有 hspedu 替换成 韩顺平教育
regStr = "hspedu";
pattern = Pattern.compile(regStr);
matcher = pattern.matcher(content);
String newContent = matcher.replaceAll("韩顺平就教育");
System.out.println("新newContent= "+newContent);
System.out.println("旧content= "+content);
}
}
标签:String,Pattern,Matcher,content,正则,实例,matcher,regStr
From: https://blog.51cto.com/u_15784725/6370428