栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

正则表达式 | 浅解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

正则表达式 | 浅解

正则表达式 | 浅解 正则表达式是一个强大的字符串处理工具,可以对字符串进行查找、提取、分割、替换等操作。是一个用于匹配字符串的模板。 正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。

部分参考自:https://www.runoob.com/regexp/regexp-syntax.html
正则表达式:在线工具

1 创建正则表达式 1.1 简单例子:

^ 为匹配输入字符串的开始位置。
[0-9]+匹配多个数字, [0-9] 匹配单个数字,+ 匹配一个或者多个。
abc 匹 配 字 母 a b c 并 以 a b c 结 尾 , 匹配字母 abc 并以 abc 结尾, 匹配字母abc并以abc结尾, 为匹配输入字符串的结束位置。

1.2 非打印字符的转义序列:

1.3 特殊字符(一般使用反斜线 转义字符):

1.4 限定符:

1.5 定位符:

1.6 预定义字符:

1.7 方括号表达式:

1.8 边界匹配符:

1.9 三种模式
  • Greedy(贪婪模式):数量表示符默认采用贪婪模式,除非另有表示。贪婪模式的表达式会一直匹配下去,直到无法匹配为止。
  • Reluctant(勉强模式):用问号后缀(?)表示,它只会匹配最少的字符。也称为最小匹配模式。
  • Possessive(占有模式):用加号后缀(+)表示,目前只有Java支持占有模式,通常比较少用。
String str = "hello , java!";
//贪婪模式的正则表达式
str.replaceFirst("\w*"," ");
//勉强模式的正则表达式
str.replaceFirst("\w*?"," ");
2 使用正则表达式 2.1 使用Pattern(样式)和Matcher(匹配)来使用正则表达式。
  • Pattern对象是正则表达式编译后在内存中的表示形式。正则表达式字符串必须先被编译为Pattern对象,然后再利用该Pattern对象创建对应的Matcher对象。执行匹配所涉及的状态保留在Matcher对象中,多个Matcher对象可共享同一个Pattern对象。
//字符串编译为Pattern对象
Pattern p = Pattern.compile("a*b");
//利用Pattern对象创建对应的Matcher对象
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();//返回true
  • 上面定义的Pattern对象可以多次重复使用。Pattern是不可变类,可供多个并发线程安全使用。
2.2 Matcher类提供几个常用方法:

find():返回目标字符串中是否包含与Pattern匹配的子串。
group():返回上一次与Pattern匹配的子串。
start():返回上一次与Pattern匹配的子串在目标字符串中的开始位置。
end():返回上一次与Patterm匹配的子串在目标字符串中的结束位置加1。
lookingAt():返回目标字符串前面部分与Pattern是否匹配。
matches():返回整个目标字符串与Pattern是否匹配。
reset():将现有的Matcher对象应用于一个新的字符序列。

  • 在Pattern、Matcher类的介绍中经常会看到一个CharSequence接口。简单地说,CharSequence代表一个各种表示形式的字符串。
2.3 找电话号码(程序示例):
public class FindGroup{
	public static void main(String[] args){
		//使用字符串模拟从网络上得到的网页源码
		String str = "我想求购一本《疯狂Java讲义》,尽快联系我13500006666"
		+"交朋友,电话号码是13611125565"
		+"出售二手电脑,联系方式15899903312";
		//创建一个Pattern对象,并用它建立一个Matcher对象
		//该正则表达式只抓取13x和15X段的手机号
		//实际要抓取哪些电话号码,只要修改正则表达式即可
		Matcher m = Pattern.compile("( (13\d) | (15\d) ) \ d(8)").matcher(str);
		//将所有符合正则表达式的子串(电话号码)全部输出
		while(m.find()){	
			System.out.println(m.group());
		}
	}
}
  • 一旦找到对应子串,下次调用find()方法接着向下查找;带int参数的find()方法将从该int索引处向下搜索。
  • start() 和 end() 方法用于确定子串在目标中的位置。
  • matcher() 和 lookingAt() 方法有点像:matcher() 要求整个字符串和Pattern完全匹配才返回true;lookingAt() 只要以Pattern开头就会返回true;
  • reset() 方法可将现有的Matcher对象应用于新的字符序列。
  • Matcher类提供的replaceAll() 方法把字符串中所有与正则表达式匹配的子串替换成“xxx”;Matcher类还提供一个replaceFirst() 方法,只替换第一个匹配子串。
  • String类中也提供了replaceAll()、replaceFirst() 、split()等方法。
2.4 在线工具
  • 不会写可以使用,正则表达式:在线工具 提供帮助,并且其还提供许多常用的正则表达式,可以到网站直接粘贴使用。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/962745.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号