一.简单字符串匹配

正则 判断路径 python python正则r_正则表达式


二.正则化实现字符串匹配

1.简单匹配

需要import re,匹配成功返回object,反之返回None;

正则 判断路径 python python正则r_正则 判断路径 python_02


2.匹配多种可能的字符串

匹配多种可能的字符串用[ ]

p3=r"r[au]n" #r表示匹配到的是正则表达式 没加r的是字符串

正则 判断路径 python python正则r_正则表达式_03


3.匹配更多可能

如图所示;

print(re.search(r"r[a-z]n",“cat runs to dog”))

print(re.search(r"r[0-9]n",“cat r2ns to dog”))

print(re.search(r"r[0-9a-z]n",“cat runs to dog”))

正则 判断路径 python python正则r_正则表达式_04


4.匹配数字

\d:decimal dight

\D:nondecimal dight

print(re.search(r"r\dn",“run r4n”))

正则 判断路径 python python正则r_字符串_05


5.匹配空格等

\s:any white space[\t\n\r\f\v]

\S:any non-white space

print(re.search(r"r\sn",“r\nn r4n”))

正则 判断路径 python python正则r_正则表达式_06


\d : 任何数字

\D : 不是数字

\s : 任何 white space, 如 [\t\n\r\f\v]

\S : 不是 white space

\w : 任何大小写字母, 数字和 “” [a-zA-Z0-9]

\W : 不是 \w

\b : 空白字符 (只在某个字的开头或结尾)

\B : 空白字符 (不在某个字的开头或结尾)

\ : 匹配

. : 匹配任何字符 (除了 \n)

^ : 匹配开头

$ : 匹配结尾

? : 前面的字符可有可无

正则 判断路径 python python正则r_python_07


正则 判断路径 python python正则r_正则_08


6.多行匹配

如果一个字符串有很多行, 我们想使用 ^ 形式来匹配行开头的字符, 如果用通常的形式是不成功的. 比如下面的 “I” 出现在第二行开头, 但是使用 r"^I" 却匹配不到第二行, 这时候, 我们要使用 另外一个参数, 让 re.search() 可以对每一行单独处理. 这个参数就是 flags=re.M, 或者这样写也行 flags=re.MULTILINE.

正则 判断路径 python python正则r_字符串_09


7.重复多次

如果我们想让某个规律被重复使用, 在正则里面也是可以实现的, 而且实现的方式还有很多. 具体可以分为这三种:

  • : 重复零次或多次
  • : 重复一次或多次
    {n, m} : 重复 n 至 m 次
    {n} : 重复 n 次

    8.group组
    我们可以为找到的内容分组, 使用 () 能轻松实现这件事. 通过分组, 我们能轻松定位所找到的内容. 比如在这个 (\d+) 组里, 需要找到的是一些数字, 在 (.+) 这个组里, 我们会找到 “Date: “ 后面的所有内容. 当使用 match.group() 时, 他会返回所有组里的内容, 而如果给 .group(2) 里加一个数, 它就能定位你需要返回哪个组里的信息。

    有时候, 组会很多, 光用数字可能比较难找到自己想要的组, 这时候, 如果有一个名字当做索引, 会是一件很容易的事. 我们字需要在括号的开头写上这样的形式 ?P<名字> 就给这个组定义了一个名字. 然后就能用这个名字找到这个组的内容。

    9.findall
    如果需要找到全部的匹配项, 我们可以使用 findall 功能. 然后返回一个列表. 注意下面还有一个新的知识点, | 是 or 的意思。

    10.replace
    通过正则表达式匹配上一些形式的字符串然后再替代掉这些字符串. 使用这种匹配 re.sub(), 将会比 python 自带的 string.replace() 要灵活多变。

    11.split
    Python 中有个字符串的分割功能, 比如想获取一句话中所有的单词. 比如 “a is b”.split(" "), 这样它就会产生一个列表来保存所有单词. 但是在正则中, 这种普通的分割也可以做的淋漓精致.

    12.compile
    我们还能使用 compile 过后的正则, 来对这个正则重复使用. 先将正则 compile 进一个变量, 比如 compiled_re, 然后直接使用这个 compiled_re 来搜索.

    下图为总结,图源网络。


正则 判断路径 python python正则r_字符串_10