正则表达式--来自《Java编程思想第四版》第13章

本文详细介绍正则表达式的各种应用场景,包括基本符号、字符类、逻辑操作符等,并通过实例展示如何进行字符串匹配、编辑及验证。同时,介绍了Java中如何利用String类的方法实现正则表达式的操作。

正则表达式提供一种完全通用的方式,能够解决各种字符串处理相关的问题:匹配,选择,编辑,验证。

\d表示一位数字。
普通的反斜线:\\
换行和制表符:单反斜线\n\t
表示一个或多个之前的表达式:+
可能有一个负号:后面跟着一位或多位数字:-?\d+

System.out.pritln("-1234".matches("-?\\d+"));

括号有着表达式分组的效果,而竖直线|则表示或操作。
(-|\+)?
因为字符+在正则表达式中有特殊的意义,所以必须使用\将其转义。使之成为表达式中的一个普通字符。

String类型还自带了一个非常有用过得正则表达式工具—split()方法,其功能是“将字符串从正则表达式匹配的地方切开”。

String s="i love China";
s.split(" ");

\W非单词字符
\w一个单词字符

String还自带的一个正则表达式工具是“替换”,你可以只替换正则表达式第一个匹配的子串,或是替换所有匹配的地方。

String s="you can make much money";
s.replaceFirst("c\\w+","must");
s.replaceAll("you|I","everyone")

以大写字母开头,以句号结尾:^[A-Z]\?
用下划线替换元音字母
s.replaceAll(“a|e|i|o|u”,”_”);

可参考JDK文档中java.util.regex包中的Pattern类。

字符
B 指定字符B
\xhh 十六进制值为oxhh的字符
\uhhhh 十六进制表示为oxhhhh的Unicode字符
\t 制表符Tab
\n 换行符
\r 回车
\f 换页
\e 转义(Escape)

字符类
. 任意字符
[abc] 包含a、b和c的任何字符(和a|b|c作用相同)
[^abc] 除了a、b和c之外的任何字符(否定)
[a-zA-Z] 从a到z或从A到Z的任何字符(范围)
[abc[hij]] 包含a、b、c、h、i和j的任何字符(和a|b|c|h|i|j作用相同)(合并)
[a-z&&[hij]] 任意h、i或j(交)
\s 空白符(空格、tab、换行、换页和回车)
\S 非空白符([^\s])
\d 数字[0-9]
\D 非数字[^0-9]
\w 词字符[a-zA-Z0-9]
\W 非词字符[^\w]

逻辑操作符
XY Y跟在X后面
X|Y X或Y
(X) 捕获组。可以在表达式中用\i引用第i个捕获组

边界匹配符
^ 一行的起始
$ 一行的结束
\b 词的边界
\B 非词的边界
\G 前一个匹配的结束

量词
贪婪型
X? 一个或零个X
X* 零个或多个X
X+ 一个或多个X
X{n} 恰好n次X
X{n,} 至少n次X
X{n,m} X至少n次,且不超过m次

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值