正则表达式学习笔记

本文详细介绍了正则表达式的各种元字符及其用法,包括基本的d、D、w、W、s、S等,以及如何使用量词、选择项、捕获分组、反向引用等高级特性。同时还讲解了如何利用环视结构进行复杂的匹配操作。
\d = [0-9] 表示0-9的任意一个数字
\D = [^0-9] 表示除数字之外的任意字符
\w = [0-9a-zA-Z] 表示数字或字母
\W = [^0-9a-zA-Z] 表示除数字或字母外的任意字符
\s 匹配空白字符(回车、换行、制表、空格)
\S 非空白字符

.能匹配所有字符,除换行符\n(但在如下的模式匹配中将可以匹配\n)
\.和[.]匹配点号本身

* 0-无穷
+ 1-无穷
? 0-1次
之前的字符可用括号来表示字符数组的多次,如:(ac)+表示出现一个及以上的ac字符串

{min,max} min-max次 \d{1,3} 匹配1-3个数字
{min,} min-无穷次 \d{1,} 匹配一个及以上的数字
{number} 只能是number次 \d{3} 匹配3个数字


多选:
(...|...)在竖线两端添加各个字符串表示多选 (ac|ab) 匹配ac或ab

捕获分组:
1、只要使用了括号就存在捕获分组
2、编号按从左至右
3、获取到的值是匹配的最后一个字符串
[color=red](?:..)不捕获文本,不是所有语言都支持,不推荐使用[/color]

反向引用:
\1 引用括号内出现的内容,数字为括号编号 (ac)\1 匹配acac

锚点:
\b 单词分解符锚点、一侧是单词字符,另一侧是非单子字符
单词字符通常是指英文字符、数字字符,对中文不适用
非单词字符通常是指各种标点复和空白字符
^匹配一行的的开头(有可能变化)
$匹配一行的末尾(有可能变化)
\A匹配整个字符串的开头
\Z匹配整个字符串的末尾

环视:
(?=...) 肯定顺序环视 右侧文本能由此表达式匹配
(?!...) 否定顺序环视 右侧文本不能由此表达式匹配
(?<=...) 肯定逆序环视 左侧文本能由此表达式匹配
<?<!...) 否定逆序环视 左侧文本不能由此表达式匹配
注意:
1、环视结构仅用于布尔判断,结构内的子表达式所匹配的文本,不会保存在整个表达式的匹配结果之中
2、逆序环视结构对子表达式存在限制:
Perl、Python:子表达式必须为固定长度
PHP、Java:子表达式
可以不定长度,但必须有上限
.NET:没有任何限制

匹配模式:
I:不区分大小写 Pattern.CASE_INSENSITIVE
S:.可以匹配任何字符 Pattern.DOTALL
M:^$可以匹配字符串中任意起始位置和结束位置 Pattern.MULTILINE
X:可以添加注释(注释以#开头以换行符结束或到表示末尾,此模式会忽略表达式中的所有空白字符) Pattern.COMMENTS

使用多个模式时用|来分隔

作用范围:ismx为模式名,如(?i)AB(?-i)C (?is)<a href.*</a>
(?ismx)启用模式
(?-ismx)停用模式
模式范围优先级高于外部指定的模式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值