正则表达式是符合一定规则的表达式,专门用来操作字符串
比如:
String qq="123456";
String regex="[1-9],[0-9]{4-14}";
boolean b=qq.matches(regex);
表示:字符串的长度只能为5-15,字符串第一个字符只能是1-9,其他字符范围是0-9
如果被测字符串满足要求,则b=true,否则b=false
使用传统的代码来判断字符串需要将字符一个一个提取出来比较,速度慢且代码量大,正则表达式技术可以帮助我们快速地判断和操作字符串,提升我们的代码效率。
步骤:
假设我们要提取出一个字符串content内所有的英文单词
1、先创建一个pattern对象:
Pattern pattern = Pattern.compile("[a-zA-Z]+");
2、创建一个匹配器对象matcher:
Matcher matcher = pattern.matcher(content);
3、利用匹配器开始循环匹配
while (matcher.find()){
System.out.println("找到:"+matcher.group(0));
}
(注:匹配器会将找到的英语单词放入group(0)中)
若需要提取出文章内的英文单词和数字,只需把创建pattern对象的代码改为;
Pattern pattern = Pattern.compile("([a-zA-Z]+)|([0-9]+)");
假设我们需要提取的内容有不确定的地方,比如要从百度网页源码中提取出百度热搜的标题,可以这样做:
Pattern pattern = Pattern.compile("<a target=\"_blank\" title=\"(\\S*)\"");
根据需要提取标题的规律,找到其中一个标题的代码并复制下来,并将标题内容部分修改为“ \\S* ”
并在循环匹配时,将group(0)改为group(1),就可以成功实现功能,
while (matcher.find()){
System.out.println("找到:"+matcher.group(1));
}
效果图如下:
由上可见,正则表达式在程序员处理文本时骑着巨大作用,能节约很多时间
我平时在处理字符串时就经常会遇到一些问题,偶然学习到了正则表达式,帮到了我很多。