正则表达式中的一些元字符


正则表达式中的一些元字符


正则表达式是一个特殊的字符序列,利用事先定义好的一些特定字符以及它们的组合组成一个“规则”,检查一个字符串是否与这种规则匹配来实现对字符的过滤或匹配。正则表达式是字符串处理的有力工具,但是并不是Python独有的,其他语言也有。

Python中,re模块提供了正则表达式操作所需要的功能。 大多数字母和字符一般都会和自身匹配。如果在字符串前面加了r,表示对字符串不进行转义。有些字符比较特殊,它们和自身并不匹配,而是表明应和一些特殊的东西匹配,或者会影响重复次数。这些特殊的字符我们称之为元字符。

常用的正则表达式元字符有如下几种:

  1. “.”: 表示除换行符以外的任意字符;
  2. “[]”:指定字符集;
  3. “^”:匹配行首,匹配以^后面的字符开头的字符串;
  4. “$”:匹配行尾,匹配以$之前的字符结束的字符串;
  5. “\”:反斜杠后面可以加不同的字符以表示不同的特殊意义;
    (1)\b匹配单词头或单词尾;
    (2)\B与\b相反,匹配非单词头或单词尾;
    (3)\d匹配任何十进制数;相当于[0-9];
    (4)\D与\d相反,匹配任何非数字字符,相当于[^0-9];
    (5)\s匹配任何空白字符,相当于[\t\n\r\f\v];
    (6)\S与\s相反,匹配任何非空白字符,相当于[^\t\n\r\f\v];
    (7)\w匹配任何字母、数字或下画线字符,相当于[a-zA-Z0-9_];
    (8)\W与\w相反,匹配任何非字母、数字和下画线字符,相当于[^a-zA-Z0-9_];
    (9)也可以用于取消所有的元字符:\、[。
    (10)这些特殊字符都可以包含在[]中。如:[\s,.]将匹配任何空白字符、",“或”."。
  6. “*”:匹配位于*之前的字符或子模式的0次或多次出现;
  7. 增加了 “+”:匹配位于+之前的字符或子模式的1次或多次出现;
  8. “?”:匹配位于?之前的0个或1个字符;
  9. “{m,n}”:表示至少有m个重复,至多有n个重复。m,n均为十进制数;
  10. “{n}”:n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o;
  11. “{n,m}:”m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次;
  12. “{n,}”:n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o;
  13. “[xyz]”:字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”;
  14. “[^xyz]”:负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“p”;
  15. “[x-y]”:字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符;
  16. "[^x-y]":负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符;
  17. “(?:x)”:匹配p但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达;
  18. “(?=p)“:正向肯定预查,在任何匹配p的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始;
  19. ”(?!p)“:正向否定预查,在任何不匹配p的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始;
  20. ”(?<=p)“:反向肯定预查,与正向肯定预查类拟,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”;
  21. ”(?<!p)“:反向否定预查,与正向否定预查类拟,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”;
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值