正则表达式

[b]正则表达式[/b]


[b]元字符[/b]
\b
代表着单词的开头或结尾,也就是单词的分界处。
"This is Regex"
"\bis\b" //只想匹配“is”这个单词,This中的“is”不匹配


.
匹配除了换行符以外的任何字符

*
重复零次或更多
.*//任意数量的不包含换行的字符

\d
匹配一个数字
\d\d //匹配2个数字
\d{8} //匹配8个数字


\w
匹配字母,数字,下划线或汉字

\s
匹配空格

[abc]
匹配包含括号内元素的字符
[a-z]//匹配a至z的所以字母


^
会匹配行或者字符串的起始位置,有时还会匹配整个文档的起始位置。

$
会匹配行或字符串的结尾
^\d{5,12}$ //QQ号必须为5位到12位数字



[b]元字符反义[/b]
"\W" 		匹配任意不是字母,数字,下划线 的字符
"\S" 匹配任意不是空白符的字符
"\D" 匹配任意非数字的字符
"\B" 匹配不是单词开头或结束的位置
"[^abc]" 匹配除了abc以外的任意字符



[b]字符转义[/b]
要查找元字符相关的要加"\"
\. //匹配.
\* //匹配*



[b]量词[/b]
"*"(贪婪)	重复零次或更多
"+"(懒惰) 重复一次或更多次
"?"(占有) 重复零次或一次
"{n}" 重复n次
"{n,m}" 重复n到m次
"{n,}" 重复n次或更多次



[b]分枝条件[/b]
|
相当于或的意思


[b]分组[/b]
()
就是这个条件使用多少次
(\d{1,3}\.){3}\d{1,3} //匹配IP地址



[b]捕获分组[/b]
其实就是一个括号内的内容


[b]后向引用[/b]
如果后而有相同的内容则可以直接引用前面定义的捕获组,以简化表达式
(\d)\d\1 //这里的"\1"就是对"(\d)"的后向引用

"zery zery" 正则 \b(\w+)\b\s\1\b 所以这里的"\1"所捕获到的字符也是 与(\w+)一样的"zery",为了让组名更有意义,组名是可以自定义名字的
"\b(?<name>\w+)\b\s\k<name>\b" 用"?<name>"就可以自定义组名了而要后向引用组时要记得写成 "\k<name>";自定义组名后,捕获组中匹配到的值就会保存在定义的组名里


"(exp)"    匹配exp,并捕获文本到自动命名的组里
"(?<name>exp)" 匹配exp,并捕获文本到名称为name的组里
"(?:exp)" 匹配exp,不捕获匹配的文本,也不给此分组分配组号



[b]零宽断言[/b]
"(?=exp)"  匹配exp前面的位置

  如 "How are you doing" 正则"(?<txt>.+(?=ing))" 这里取ing前所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为"How are you do";

"(?<=exp)" 匹配exp后面的位置

  如 "How are you doing" 正则"(?<txt>(?<=How).+)" 这里取"How"之后所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为" are you doing";

"(?!exp)" 匹配后面跟的不是exp的位置

  如 "123abc" 正则 "\d{3}(?!\d)"匹配3位数字后非数字的结果

"(?<!exp)" 匹配前面不是exp的位置

  如 "abc123 " 正则 "(?<![0-9])123" 匹配"123"前面是非数字的结果也可写成"(?!<\d)123"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jie310600

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值