加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 19:48:28 所属栏目:百科 来源:网络整理
导读:正则表达式 正则表达式:符合一定规则的表达式。 作用:专门操作字符串 特点:用于一些特定的符号来表示一些代码的操作。这样就简化书写。 好处:可以简化对字符串的复杂操作。 弊端:符号定义越多,正则越长,阅读新越差。 String类 1、匹配:boolean match


正则表达式

正则表达式:符合一定规则的表达式。

作用:专门操作字符串

特点:用于一些特定的符号来表示一些代码的操作。这样就简化书写。

好处:可以简化对字符串的复杂操作。

弊端:符号定义越多,正则越长,阅读新越差。

String类

1、匹配:boolean matches(regex)用规则匹配整个字符串,只要有一处不符合规则,就结束返回false。

2、切割:String[] split(regex);

		//按照叠词完成切割。为了可以让规则的结果被重用
		//可以将规则封装成一个组。用()完成。组的出现都有编号。
		//从1开始。 想要使用已有的组可以通过  n(n就是组的编号)的形式来获取。
		String str1 = "erkktyqqquizzzzzo";
		String reg = "(.)1+";
		String[] arr = str1.split(reg);  
		System.out.println(arr.length);
		for(String s : arr)
		{
			System.out.println(s);
		}

3、替换:String[] replaceAll(regex,str):str为要替换为的字符串

		String str = "我我...我我...我要..要要...要要...学学学....学学...编编编...编程..程.程程...程...程";
		str = str.replaceAll(".","");
		System.out.println(str);
		str = str.replaceAll("(.)1+","$1");
		System.out.println(str);

当要应用的组不再同一个字符串内,想要用前一个字符串的组用$n(n为编号)。

将重叠的字符替换为单个字符,将叠词替换掉用$

4、获取:将字符串中的符合规则的子串取出。

步骤:

1)、将正则表达式封装成Pattern对象。Pattern p = Pattren。compile(regex);

2)、让正则对象和要操作的字符串相关联。p.matcher(String);

3)、关联后获取正则匹配引擎(匹配对象)。Matcher m =p.matcher(String);

其实String类中的matches方法用的就是Pattern和Matcher对象来完成。

只不过被String的方法封装后,用起来较为简单,但是功能单一。

boolen find():匹配查找,返回找到true还是找不到false,同时记录指针,用于下次find

String group():取出上一步find()所找到的结果。

必须用find()再group()才能获取。

通过迭代就可以把匹配到的所有结果取出。

匹配器Matcher中的指针是公用的,当用matches匹配后,指针就会产生变化,当再用find查找时,就是从匹配后的位置开始查找

{
	BufferedReader bufr = 
		new BufferedReader(new FileReader("mail.txt"));
	String line = null;
	String mailreg = "w+@w+(.w+)+";
	Pattern p = Pattern.compile(mailreg);

	while((line=bufr.readLine())!=null)
	{
		Matcher m = p.matcher(line);
		while(m.find())
		{
			System.out.println(m.group());
		}
	}
}
注意:在正则当中反斜杠“”都是成对出现的。因为单个反斜杠“”是代表转译,必须要转译回来。

到底用四种功能中的哪一个呢?或者哪几个呢?

思路:

1、如果只想知道该字符是否对错,使用匹配。

2、想要将已有的字符串变成另一个字符串,用替换

3、想要安装指定的方式将字符串变成多个字符串,用切割,获取规则以外的子串。

4、想要拿到符合需要的字符串子串,获取。获取符合规则的子串。


网路爬虫

通过网络以及IO读取网页的源文件,并通过规则获取网页中的符合规则的数据

	{
		URL url = new URL("http://dzh.mop.com/whbm/20060907/0/7z5S8I707f188a73.shtml");
		url.openConnection();
		BufferedReader buf = new BufferedReader(new InputStreamReader(url.openStream()));
		String line = null;
		String reg = "w+@w+(.w+){1,3}";
		Pattern p = Pattern.compile(reg);
		while((line = buf.readLine())!=null)
		{
			Matcher m = p.matcher(line);
			while(m.find())
			{
				System.out.println(m.group());
			}
		}
	}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读