Java 使用正则表达式对象实现正则的获取功能
作者:qq_17503037 发布时间:2023-05-10 06:29:16
获取需要使用到正则的两个对象:
使用的是用正则对象Pattern 和匹配器Matcher。
用法:
范例:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();步骤:
1,先将正则表达式编译成正则对象。使用的是Pattern类一个静态的方法。compile(regex);
2,让正则对象和要操作的字符串相关联,通过matcher方法完成,并返回匹配器对象。
3,通过匹配器对象的方法将正则模式作用到字符串上对字符串进行针对性的功能操作
需求:获取由3个字母组成的单词。
public static void getDemo()
{
String str = "da jia zhu yi le,ming tian bu fang jia,xie xie!";
//想要获取由3个字母组成的单词。
//刚才的功能返回的都是一个结果,只有split返回的是数组,但是它是把规则作为分隔符,不会获取符合规则的内容。
//这时我们要用到一些正则对象。
String reg = "\\b[a-z]{3}\\b";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(str);
while(m.find())
{
System.out.println(m.start()+"...."+m.end());
System.out.println("sub:"+str.substring(m.start(),m.end()));
System.out.println(m.group());
}
// System.out.println(m.find());//将规则对字符串进行匹配查找。
// System.out.println(m.find());//将规则对字符串进行匹配查找。
// System.out.println(m.group());//在使用group方法之前,必须要先找,找到了才可以取。
}
校验邮件
public static void checkMail()
{
String mail = "abc123@sina.com.cn";
mail = "1@1.1";
String reg = "[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
reg = "\\w+@\\w+(\\.\\w+)+";//简化的规则。笼统的匹配。
boolean b = mail.matches(reg);
System.out.println(mail+":"+b);
}
网络爬虫 (获取邮箱)
class GetMailList
{
public static void main(String[] args) throws Exception
{
String reg = "\\w+@[a-zA-Z]+(\\.[a-zA-Z]+)+";
getMailsByWeb(reg);
}
public static void getMailsByWeb(String regex)throws Exception
{
URL url = new URL("http://localhost:8080/myweb/mail.html");
URLConnection conn = url.openConnection();
BufferedReader bufIn = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
Pattern p = Pattern.compile(regex);
while((line=bufIn.readLine())!=null)
{
//System.out.println(line);
Matcher m = p.matcher(line);
while(m.find())
{
System.out.println(m.group());
}
}
bufIn.close();
}
public static void getMails(String regex)throws Exception
{
BufferedReader bufr =
new BufferedReader(new FileReader("mail.txt"));
String line = null;
Pattern p = Pattern.compile(regex);
while((line=bufr.readLine())!=null)
{
//System.out.println(line);
Matcher m = p.matcher(line);
while(m.find())
{
System.out.println(m.group());
}
}
bufr.close();
}
}
单词边界匹配器 \b
\b代表一个单词的开始和结束部分,不匹配任何字符
总结
以上所述是小编给大家介绍的Java 使用正则表达式对象实现正则的获取功能网站的支持!
来源:https://blog.csdn.net/qq_17503037/article/details/79908829
猜你喜欢
- 平时我们写个脚本,要放到后台执行去,我们怎么做呢?nohup python example.py 2>&1 /dev/null
- 生成器是 Python 的基本组成部分。生成器是一个至少有一个“yield”表达式的函数。它们是可以
- 本文介绍基于Python语言,实现对多个不同Excel文件进行数据读取与平均值计算的方法。首先,让我们来看一下具体需求:目前有一个文件夹,其
- 字体的处理在网页设计中无论怎么强调也不为过,毕竟网页使用来传递信息的,而最经典最直接的信息传递方式就是文字,所以,了解一点字体的基本知识对于
- WingIDE的使用好的工具可以让你做事时,事半功倍!这一点在写代码的过程中尤为明显,使用Pyhton写程序有一年多了!各类编辑器IDE也使
- 好久没有写ASP代码了,今天在做一个简单的留言本时,出现了一下错误: Microsoft Office Access Database En
- 一、背景python是一个动态语言,可以支持我们在运行时动态的给类、对象添加属性或者方法;但是如果我们想要限制可以添加的属性或方法该怎么办呢
- 我们经常会在登录一个网站的时候被引导页挡住前进的脚步,这一点在上个世纪到本世纪初的网站中尤其明显,特别是在企业网站里,几乎每个企业网站都会有
- scrapy框架只能爬取静态网站。如需爬取 * 站,需要结合着selenium进行js的渲染,才能获取到动态加载的数据。如何通过seleni
- 目的:在help(模块名)时,能够看见文件里面的注释。首先,在文件的最开头,如果有个多行注释(三引号),就会将注释写入__DOC__变量,在
- 首先,到底什么是网络服务器?简而言之,它是在物理服务器上搭建的一个网络连接服务器(networking server),永久地等待客户端发送
- 今天在项目中向数据库的CLOB属性插入一段篇文章(1000~2000)字就会报一个字符串过长的错误。网上说用流来处理,没有这么做。这像是一个
- 现代浏览器可以基于RFC 2397标准使用base64把图片进行编码,然后输出类似data:image/png;base64,iVBORw0
- 使用Flask实现进度条问题描述Python异步处理,新起一个进程返回处理进度解决方案使用 tqdm 和 multiprocessing.P
- 基本思想:归并排序是一种典型的分治思想,把一个无序列表一分为二,对每个子序列再一分为二,继续下去,直到无法再进行划分为止。然后,就开始合并的
- 首先说下,由于最新的 0.8 版还是开发版本,因此我使用的是 0.79 版,API 也许会有些不同。因为我是搭配 MySQL InnoDB
- 真的很重要,栽了个跟头!!!(虽然以前好像知道。。。)print(True or False and False)print((True o
- 有这样的情形,django个人头像在model中是:class UserProfile(AbstractUser): ""
- Tensorflow 提供了一种统一的格式来存储数据,这个格式就是TFRecord,上一篇文章中所提到的方法当数据的来源更复杂,每个样例中的
- 步骤:Settings-->Editor-->Colors & Fonts-->Font然后在size