Java—正则表达式(Pattern类和Matcher类)
2020-03-15 16:01:32来源:博客园 阅读 ()
Java—正则表达式(Pattern类和Matcher类)
本文主要介绍Java—正则表达式(Pattern类和Matcher类)的使用。正则表达式介绍
??正则表达式可以用于对字符串的处理,相当于是一个匹配字符串的模板。主要包含查找、替换、分割、提取等操作;Java中通过Pattern
和Matcher
类提供对正则的支持。
字符处理
特殊字符处理
对于特殊字符:$
、^
、(
、)
、[
、]
、 {
、}
、 *
、 +
、 ?
、 .
、\
、|
前面都要加上\
进行转义。
预定义字符
预定义字符即为正则表达式中的“通配符”,就是可以匹配多个字符的特殊字符。
|预定义字符|作用|
|-|-|
|.|匹配任意字符|
|\d|digit,代表数字,匹配0-9中的所有数字|
|\D|匹配非数字|
|\s|space,代表空白,匹配所有空白字符(空格、换行、回车、换页、制表符等)|
|\S|匹配所有非空白字符|
|\w|word,代表单词,匹配所有单词字符,包含0-9所有数字、26个英文字母以及下划线"_"|
|\W|匹配所有非单词字符|
三种模式的数量表示符
- 贪婪模式:Greedy,数量表示符默认为贪婪模式,会一直匹配下去,直到无法匹配为止。
- 勉强模式:Reluctant,用问号
?
后缀表示,只会匹配最少的字符,也被称为最小匹配模式。 - 占有模式: Possessive, 用加号
+
后缀表示。
贪婪模式 | 勉强模式 | 占用模式 | 作用 |
---|---|---|---|
X? | X?? | X?? | X表达式出现0次或1次 |
X* | X*? | X*? | X表达式出现0次或多次 |
X+ | X+? | X+? | X表达式出现1次或多次 |
X{n} | X{n}? | X{n}? | X表达式出现n次 |
X{n,} | X{n,}? | X{n,}? | X表达式最少出现n次 |
X{n,m} | X{n,m}? | X{n,m}? | X表达式最少出现n次,最多出现m次 |
方括号表达式
方括号表达式含义 | 作用 |
---|---|
枚举 | [abcd],表示a、b、c、d中的任意一个字符; |
范围:- | [a-e],表示从a到e字母中的任意字母;可结合枚举进行使用,[a-eu-z],表示从a到e,从u到z范围内的任意字符 |
否定:^ | [^abcd],表示不是a、b、c、d中的字符;[^a~e]表示不是a至f范围的字符 |
与运算:&& | [a-g&&[bch],求a~z和bch的交集,则结果为bc |
并运算 | [a-e[h-j]] |
正则表达式的使用
String类常用方法
String类
中的查找、替换、分割、提取等操作方法
boolean matches(String regex)
:判断该字符串是否匹配指定的正则表达式;String replaceFirst(String regex, String replaceStr)
:将该字符串中第一个匹配regex的子串替换成replaceStr;String replaceAll(String regex, String replaceStr)
:将该字符串中所有匹配regex的子串替换成replaceStr;String[] split(String regex)
:以regex作为分隔符对字符串进行分割;
Matcher类常用方法
find()
:返回目标字符串中是否包含与Pattern匹配的子串,若传入int类型的参数,则从该int索引处向下搜索;group()
:返回上一次与Pattern匹配的子串;start()
:用于确定子串在目标字符串中的位置;返回上一次与Pattern匹配的子串在目标字符串中的开始位置;end()
:用于确定子串在目标字符串中的位置;返回上一次与Pattern匹配的子串在目标字符串中的结束位置加1;matches()
:判断整个目标字符串与Pattern是否匹配,要求整个字符串都和Pattern完全匹配时才会返回true;lookingAt
:返回目标字符串前缀与Pattern是否匹配,只需要字符串以Pattern开头就返回true;reset()
:将现有的Matcher对象应用于一个新的字符序列;
Pattern对象用法
??Pattern是不可变类,是正则表达式编译后在内存中的表示形式,在Java中使用正则表达式字符串必须要先被编译为Patter对象,然后再使用Pattern对象创建对应的Matcher对象。
用法
// 编译正则表达式为Pattern对象
Pattern pattern = Pattern.compile("bc*d");
// 使用编译好的Pattern对象创建Matcher对象
Matcher m = p.matcher("bccccd");
boolean b = m.matches();
System.out.println(b);
结果
true
上述步骤等价于
boolean b = Pattern.matches("bc*d", "bccccd");
System.out.println(b);
原文链接:https://www.cnblogs.com/Andya/p/12500399.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash