《学习正则表达式》笔记

《学习正则表达式》笔记

《学习正则表达式》笔记

  1. 简单的匹配模式
  1. 匹配数字 d或[0-9]
  2. 匹配非数字 D或[^0-9]
  3. 选择匹配 匹配0或1 [01]
  4. 匹配单词 w 或者 [A-Za-z0-9]
  5. 匹配非单词 W 或者[^A-Za-z0-9]
  6. 匹配8进制 o
  7. 匹配16进制 x
  8. 匹配unicode值 u
  9. 匹配换行 n
  10. 匹配空字符 s 或者 [ tnr]
  11. 匹配非空字符 S
  12. 匹配5个字符 s{5}
  13. 匹配非换行字符 .
  14. 匹配1个或0个 ?
  15. 匹配0个或多个 *
  16. 匹配1个或多个 +
  17. 否定是 ^
  18. 匹配开头 脱字符 ^
  19. 匹配末尾 美元符号 $

  1. 边界
  1. 行边界 multiline模式下,将所有行视为一个行 ^ $
  2. 单词边界 btheb 单词边界 b 非单词边界 B
  3. 主题词起始与终止位置 A匹配主题词起始位置 Z匹配终止位置
  4. 引用字符串字面值边界 ()用于引用字符串
  5. 使用元字符的字面值 \Q$\E则会匹配$
  1. 选择分组和向后引用

分组的选择操作 (the|The|THE)

忽略大小写匹配为 (?i),所以上面可以改为 (?i)the

子模式(t|T)h(e|eir) 或[tT]h(e|eir)

子模式匹配单词 b[tT]h[eir]*b 可以匹配单词 thee或Thee Thrr

捕获分组和向后引用 捕获分组用(),向后引用用 1(引用第一个分组) 2(引用第二个捕获的分组)

命名分组 <?(name)…> 或者 (?name…) python里面的分组命名(?P<name>…) python里面引用分组为(?P=name)

捕获分组会将捕获的字符放在内存当中,可以在程序中是此案调用。分组最多可以捕获9个

非捕获分组 是捕获后不会放在内存中的分组
(the|THE|THe)
(?:the|THE|THe)
(?:(?i)the)
最推荐的写法是(?i:the)

  1. 字符组

匹配一个特定的字符,比如需要匹配元音字母[aeiouAEIOU]

匹配a-z [a-z]

匹配数字[0-9] 匹配大于4的数字[5-9]

匹配两位数的偶数 b[1-9][02468]b

字符取反,匹配非元音字母[^aeiouAEIOU]

并集与差集,并集[[]]匹配0-3或6-9的数 [0-3[6-9]]

差集,与集合的逻辑一样,自然要用到否定了。匹配a-z之间,但m-r除外的字符[a-z[^m-r]]

  1. 匹配unicode字符

x和X可以匹配的最大值255 ff

u可以匹配的最大值为65535 ffff

U可以匹配的最大是7fffffff

匹配控制字符 cx

  1. 贪心,懒惰和占有
    >贪心量词,尽力匹配最多。。比如 *

懒惰量词 *? 加? 则量词由贪心变成懒惰

也就是 .* 和 .*?的区别

匹配的m-n次 a{2-4}


懒惰 5可以匹配一个5

5?也可以匹配一个5

而5??则不能匹配5


5*可以匹配0个或多个5

而5*?则不能匹配5


5+可以匹配一个或多个5

5+?则只能匹配一个5


懒惰?让表达式匹配最少的5

占有量词

占有量词和贪心匹配一样,尽可能多地选定更多的内容。与谈心不同的是,她不会回溯,

.*+ 占有式匹配0次或多次

++ 匹配一次或多次

?+ 匹配零次或多次

{n}+ 匹配n次

{n,}+ 匹配n次或更多次

{m,n}+ 匹配m-n次

  1. 环视

正前瞻 (?=name) 匹配name前面 比如 ruhuorutu(?=liujian)匹配liujian之前的ruhuorutu 比如ruhuorutuliujian。。。两个词一定要紧靠,不能有空格或者其他字符隔开

反前瞻 (?!name)

正后顾 (?<=name)

反后顾 (?<!name)

  1. 用html标记文档
    >匹配标签 <[a-zA-Z][^>]*>

>


另外参考,三十分钟学习正则表达式

Categories: 正则表达式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值