正则表达式学习笔记

正则表达式看起来很简单,实际上很复杂,就像古文,就那么几个字,可是解析起来却很复杂的。但是也不用害怕,只要从简单处入手,还是可以掌握一些基本的原理的。

正则表达式的运作原理是:

1. 它是处理字符串的,所以不要给二进制的内容,视频流,网络流这些它都不能处理。

2. 首先要有一个待处理的字符串,通常的例子是一个电话号码,或者一个网址,一个邮件地址,需要去验证这个字符串是否合法。

3. 然后要有一个正则表达式,正则表达式也是一个字符串。

4. 然后用String类本身的matches方法去判断输入的字符串是否符合规则,如果符合就返回true,否则返回false。


下面举一个最简单的例子:

public class regularExpression {

	public static void main(String[] args) {
		boolean res = true;
		res = checkMailAddress("1234");
		
		System.out.println(res);
	}
	
	private static boolean checkMailAddress(String s)
	{
		String reg = "[1][2][3][4]";
		
		return s.matches(reg);
	}
	

}

这里的reg的意思是,字符串的第一个字符是1,第二个是2,第3个是3, 第4个是4.按照这个规则,只有"1234“字符串才能符合这个要求。当然实际情况是不会这样写的,这样写相当于验证密码了。

更多的情况是判断是否某一类字符串,比如说判断是否电子邮件地址的规则:

1. 有2个字符串分别在@符号的2边

2. 右边的字符串应该包含一个"."

3. 字符串只能包含数字,字母,"-",".","_", 不包含空格

那么要如何去写这个规则?

reg = "\\w+@\\w+(\\.\\w+)+";

相关的规则可以查看java开发手册的Sting类,里面的matches方法里面的正则表达式链接里面就有。

其中\w的意思是所有单词,相当于[a-zA-Z_0-9], 这个意思是说中括号里面的字符都包含,也就是所有小写字母、所有大写字母,下划线以及所有数字。(事实上应该还要包括减号和点号,待补充)

后面跟的加号表示要出现一次或多次。

为什么需要用2个反斜杠,因为在字符串本身的规则里面反斜杠表示转义字符,而我们这里希望表示反斜杠本身,所以就用了2个。

同样的,在@右边的部分也很容易理解,就是可以包括1个或以上的单词字符或者下划线。

那么(\\.\\w+)+又是什么意思?

这里面的点号也是用了双斜杠来转义,如果不转义的话,点号在正则里面是代表所有字符。

因为有些邮箱是带国家域名的:johnny@google.com.cn

用括号包起来,后面跟个加号,表示出现一次或者一次以上。


另外一种正则表达式的用途是网页爬虫,常见的有从一个网页上查找电子邮件地址,或者从网络上查找图片地址,或者各种想要的资源。

因为网页的格式是html,而html本身就是很多字符串的集合。

有了正则表达式这种技术,网页爬虫就能自动化生成邮件列表,我们经常遇到的电子邮件垃圾就是这样来的,就是有一些人利用爬虫在网上随便搜地址,然后就用群发的方式来发送邮件。但是这种方式毕竟已经很落后了。其实是可以做得更智能化和精准化的。事实上google和百度的搜索引擎也是用这种原理,就是预先把各种可能的关键字存起来,做成索引,然后在用户做搜索的时候进行相关度匹配,然后呈现出结果给用户。








1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资源 5来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资 5源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值