正则表达式稍微复杂的一点的几个

\b和\B(\b匹配一个单词的边界,\B不匹配一个单词的边界)
匹配单词 Chapter 中的字符串 ter,因为它出现在字边界的前面:
ter\b->但他不能匹配Chapters中的ter
ter\B就能匹配Chapters中的ter不能匹配Chapter中的ter


pattern+?、pattern*?
这两个比较常用,表示懒惰匹配,即匹配符合条件的尽量短的字符串。
默认情况下 + 和 * 是贪婪匹配,即匹配尽可能长的字符串,在它们后面加上 ?
表示想要进行懒惰匹配。
a+? -> 只匹配a
a+ -> 匹配a,aa.....

(?=pattern)正向肯定预查
"Windows(?=95|98|NT|2000)"能匹配"Windows2000"中的"Windows",
但不能匹配"Windows3.1"中的"Windows"。

(?!pattern)正向否定预查
hello(?!1|2|3|4)
可以匹配hello,hello5中的hello,不能匹配hello1,hello2,hello3,hello4中的hello

(?<=pattern)反向(look behind)肯定预查
(?<=95|98|NT|2000)Windows"能匹配"2000Windows"中的"Windows",
但不能匹配"3.1Windows"中的"Windows"。

(?<!pattern)
"(?<!95|98|NT|2000)Windows"能匹配"3.1Windows"中的"Windows",
但不能匹配"2000Windows"中的"Windows"

(?:pattern)匹配 pattern 但不获取匹配结果
hello(?:1|2|3|4)匹配hello1,hello2,hello3,hello4中的hello1,hello2,hello3,hello4

(?(id/name)yes-pattern|no-pattern)
如果编号为id/别名为name的组能匹配到字符,则需要匹配yes-pattern否则匹配no-pattern,
(\d)abc(?(1)\d|abc)匹配1abc2或者abcabcno-pattern可以省略

 

age:
1.^(.*)(\*?)(.*)(\*?)(.*)(\*?)(.*) .* \1((?!\2).+|\2)\3((?!\4).+|\4)\5((?!\6).+|\6)\7$
*err* matches superreform
*falle*ess matches unfallenness
*il*log* matches unphilological
2.^(<(<(<(<(<(<(<>)*>)*>)*>)*>)*>)*>)*$
<<<<<>><<>>><<>>><<><>><<>>><<<<<>>>>><<<><>><<<<>><>>>><<><>>
<<<<<>><>><<><<>>>><>><<<<<>><<>>><<><<>>>><<<>>><<<><<>>><<<>>>><<<<>><<>>>>><<<<>>><<><<>><>><<<<>>><<<>>>>>

 

转载于:https://www.cnblogs.com/smallJunJun/p/9617706.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值