正则表达式(学习笔记)

一、正则表达式

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。

re 模块使 Python 语言拥有全部的正则表达式功能。

compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。

二、正则标记(背)

1、【 匹配数量:单个 】字符匹配

  • 任意字符: 表示由任意字符组成;
  • \ \ :匹配"\";
  • \n :匹配换行;
  • \t :匹配制表符;

2、【 匹配数量:单个 】字符集(可以从里面任选一个字符)

  • [abc]: 表示可能是字母a、b、c中的任意一个;
  • [^abc]: 表示不是字母a、b、c中的任意一个;
  • [a-zA-Z]:表示由任意字母所组成,不区分大小写;
  • [0-9]: 表示由一位数字所组成;

3、【数量:单个】简化的字符集

  • .:"英文下的点"表示任意的字符;
  • \d:等价于“[0-9]”范围;
  • \D:等价于”[ ^0-9]“范围
  • \s:匹配任意一位空格,可能是空格、换行、制表符;
  • \S:匹配任意一位非空格部分,可能是空格、换行、制表符;
  • \w:匹配字母、数字、下f划线,等价于”[a-zA-Z_0-9]“;
  • \W:匹配f非字母、数字、下划线,等价于”[ ^a-zA-Z_0-9]“;

4、边界匹配:

  • ^:匹配边界开始;
  • $:匹配边界结束;(一般在Java中用不上)

5、数量表示,默认情况下只有添加上了数量单位才可以匹配多位字符;

  • 表达式?:该正则可以出现0次或一次;
  • 表达式*:改正则可以出现0次、1次或多次;
  • 表达式+:该正则可以出现1次或多次;
  • 表达式{n}:表达式的长度正好为n次;
  • 表达式{n,}:表达式的长度位n次以上;
  • 表达式{n,m}:表达式的长度在n~m次;

6、逻辑表达式:可以连接多个正则:

  • 表达式X表达式Y:X表达式之后紧跟上Y表达式验证;
  • 表达式X|表达式Y:有一个表达式满足即可;
  • (表达式):为表达式设置一个整体描述,可以为整体描述设置数量单位;

7、两个模式
贪婪模式:尽可能多地匹配
懒惰模式:尽可能少地匹配,精准模式
默认为贪婪模式
如果出现如下组合,则代表为懒惰模式:
*?
+?

8、模式修正符,在不改变正则表达式的情况下通过模式修正符使匹配结果发生更改

  • .s :如果设定了此修正符,模式中的圆点元字符.匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。
  • .i :如果设定了此修正符,模式中的字符将同时匹配大小写字母。
  • .m :如果设定了此修正符,行起始和行结束除了匹配整个字符串开头和结束外,还分别匹配其中的换行符的之后和之前。
  • .x :如果设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的#以及下一个换行符之间的所有字符,包括两头,也都被忽略。
  • .e :如果设定了此修正符,preg_replace()在替换字符串中对逆向引用作正常的替换。
  • .? :在./+/*之后表示非贪婪匹配,./+/*限定符都是贪婪的,它们会尽可能多的匹配文字,在它们的后面加上一个?就可以实现非贪婪或最小匹配。

9、XPATH

  • / :逐层提取
  • text() :提取标签下面的文本
  • //标签名** : 提取所有名为**的标签
  • // 标签名[@属性=‘属性值’] :提取属性为XX的标签
  • @属性名 :代表取某个属性值
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值