正则表达式 Regular Expression

Regular Expression

  • 正则表达式是文本处理极为重要的技术,用它对字符串按照某种规则进行检索、替换;

一、基本语法:

1.1 元字符 meta character【1、元字符都是表示一个字符;2、元字符中的斜杠都是反斜杠;3、全局匹配;】

 

注意:

  • 元字符 \w 类似标识符;
  • 转义:凡是在正则表达式中有特殊意义的符号,如果想使用它的本意,请使用 \ 转义;
  • \r 、 \n 还是转义后代表回车、换行;

 

1.2 重复

小结:

  • 至少重复 0 次的有:* 、? ;
  • 至少重复 1 次的有:+ ;
  • 至多重复 1 次的有:?;
  • { n } 与 { n,} 有区别,前者固定重复 n 次;后者至少重复 n 次,至多重复无限制;

 

1.3 表达式

 

 

注意:

  • Python使用命名分组中时,格式为(?P<name>exp)需要在 ?问号后加 P 大写的P;
  • 使用命名分组的分组时,调用分组需要在尖括号前加转义字符 \ ;eg:\<name>
  • 特别注意:使用断言时匹配到的是断言前的字符,而不是断言中的条件;这里要特别注意;
  • 在正则表达式中注释少用;
  • 分组和捕获是同一个意思;
  • 断言与分组不同,断言不占用分组号;断言如同条件,只是要求匹配必须满足断言的条件;

 

 

 

二、贪婪与非贪婪

  • 默认是贪婪模式,也就是说尽量多匹配更长的字符串;
  • 非贪婪很简单,在重复的符号后面加上一个 ? 问号,就尽量的少匹配了;

 

2.1 非贪婪模式

 

eg:very very happy

  1. 使用贪婪模式:v.*y Match:very very happy
  2. 使用非贪婪模式:v.*?y Match:(1)very(2)very

 

2.2 引擎选项

 

小结:

  • 单行模式:
    • . 点可以匹配所有字符,包括换行符;
    • ^ 脱字符表示整个字符串的开头,$ 整个字符串的结尾;
  • 多行模式:
    • . 点可以匹配除了换行符之外的字符;
    • ^ 脱字符表示行首,$ 行尾;
    • ^ 脱字符表示整个字符串的开始,$ 表示整个字符串的结尾。开始指的是 \n 后紧接着下一个字符,结束指的是 \n 前的字符;
  • 总结:可以认为,单行模式就如同看穿了换行符,所有文本就是一个长长的只有一行的字符串,所以 ^ 脱字符就是这一行字符串的行首,$ 就是这一行的行尾;
  • 多行模式:无法穿透换行符,^ 脱字符和 $ 还是行首行尾的意思,只不过限于每一行;

 

注意:注意字符串中看不见的换行符,\r\n 会影响 e$ 的测试,e$ 只能匹配e\n

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值