正则表达式小笔记

String  

1:trim():去掉字符串头尾的空格

2:split(String regex):将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组

三:matchs(String regex).判断字符串是否匹配输入的字符串

作用:

从一个字符串中查找符合某种规则的字符串,使用Pattern和Matcher类

判断一个字符串是否符合某种规则。 matchs(String regex)方法:判断字符串是否符合正则表达式(即参数regex是一个正则表达式)的描述

按照某种规则替换字符串中的内容。 replaceAll(String regex,String replacement)方法,找到字符串符合正则表达式(即参数regex)描述的所有字符串,并用replacement字符串替换掉(注意:replacement参数不是正则表达式)。


1:能够匹配多种字符的表达式

\d : 任意一个从0到9的数字

\D:任意除0-9之外的字符

\s:任意空白字符(空格、换行等等)

\S:任意非空白字符

. :任意字符

\w:任意字母或数字或下划线,即a-z,A-Z,0-9或_


如:查找所有的数字,并标出他们的位置

		String s = "1234567world.text99";
		Pattern pattern = Pattern.compile("\\d");
		Matcher matcher = pattern.matcher(s);
		while(matcher.find()){
			String value = matcher.group();
			System.out.println(value+"("+matcher.start()+","+matcher.end()+")");
		}
结果:
1(0,1)
2(1,2)
3(2,3)
4(3,4)
5(4,5)
6(5,6)
7(6,7)
9(17,18)
9(18,19)


2:使用[]包好系列字符,能匹配其中之一;使用[^]包含系列字符,不匹配其中任意一个字符

3:修饰匹配次数

? 0次或1次

*  0次或多次

+ 1次或多次

{n} n次

{n,} 至少n次

{n,m} 至少n次,但不大于m次


4:匹配字符串开头和结尾的特殊字符

^hello  字符串必须hello开头

hello$  字符串必须hello结尾


5:表示“或”关系的符号“|”


6:分组符号“()”

可以对()内的表达式修饰起次数

想要对某个搜索结果分组获取其值的时候也用分组符号


7:贪婪模式:尽可能多地匹配

 贪婪模式只匹配一次

		String s = "<table>"+
		              "<tr>"+
		                "<td>java</td>"+
		                "<td>sun</td>"+
		                "<td>orcal</td>"+
		                "</tr>"+
		                "<tr>"+
		                "<td>c#<td>"+
		                "<td>microsoft</td>"+
		                "<td>unkown</td>"+
		                "/tr"+
		              "</table>"
		                ;
		/*贪婪模式分组
		 * 表达式分成两组
		 * 第0组:<td>(.*?)<td>,即整个表达式
		 * 第1组:(.*?)*/
		Pattern pattern = Pattern.compile("<td>.*</td>");
		Matcher matcher = pattern.matcher(s);
		while(matcher.find()){
			String value = matcher.group();
			System.out.println(value+"("+matcher.start()+","+matcher.end()+")");
		}
	
结果:<td>java</td><td>sun</td><td>orcal</td></tr><tr><td>c#<td><td>microsoft</td><td>unkown</td>(11,102)



非贪婪模式:尽可能少地匹配


		String s = "<table>"+
		              "<tr>"+
		                "<td>java</td>"+
		                "<td>sun</td>"+
		                "<td>orcal</td>"+
		                "</tr>"+
		                "<tr>"+
		                "<td>c#<td>"+
		                "<td>microsoft</td>"+
		                "<td>unkown</td>"+
		                "/tr"+
		              "</table>"
		                ;
		/*贪婪模式分组
		 * 表达式分成两组
		 * 第0组:<td>(.*?)<td>,即整个表达式
		 * 第1组:(.*?)*/
		Pattern pattern = Pattern.compile("<td>(.*?)</td>");
		Matcher matcher = pattern.matcher(s);
		while(matcher.find()){
			String value = matcher.group();
			System.out.println(value+"("+matcher.start()+","+matcher.end()+")");
		}
	

结果:

<td>java</td>(11,24)
<td>sun</td>(24,36)
<td>orcal</td>(36,50)
<td>c#<td><td>microsoft</td>(59,87)
<td>unkown</td>(87,102)


加入分组选择:

		String s = "<table>"+
		              "<tr>"+
		                "<td>java</td>"+
		                "<td>sun</td>"+
		                "<td>orcal</td>"+
		                "</tr>"+
		                "<tr>"+
		                "<td>c#</td>"+
		                "<td>microsoft</td>"+
		                "<td>unkown</td>"+
		                "/tr"+
		              "</table>"
		                ;
		/*贪婪模式分组
		 * 表达式分成两组
		 * 第0组:<td>(.*?)<td>,即整个表达式
		 * 第1组:(.*?)*/
		Pattern pattern = Pattern.compile("<td>(.*?)</td>");
		Matcher matcher = pattern.matcher(s);
		while(matcher.find()){
			String value = matcher.group(1);
			System.out.println(value+"("+matcher.start()+","+matcher.end()+")");
		}
	

结果:

java(11,24)
sun(24,36)
orcal(36,50)
c#(59,70)
microsoft(70,88)
unkown(88,103)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值