# 正则表达式

# 正则语法

# 单个字符

  1. 换行符:\n,记忆方法:new line;
  2. 换页符:\f,记忆方法:form feed;
  3. 回车符:\r,记忆方法:return;
  4. 空白符:\s,记忆方法:space;
  5. 制表符:\t,记忆方法:table;

# 多个字符

  1. 定义集合:[],例如/[123]/可以同时匹配 1,2,3 三个字符;
  2. [0-9]匹配所有数字,[a-z]匹配所有小写英文字母,[A-Z]匹配所有小写英文字母, [\u4e00-\u9fa5]匹配所有的汉子;
  3. 匹配除了换行符之外的任何字符:.,记忆方法:代表句号,表示除了句子结束符
  4. 匹配单个数字[0-9],\d,记忆方法:digit;
  5. 匹配除了[0-9],\D,记忆方法:not digit;
  6. 匹配包括下划线在内的单个字符,[A-Za-z0-9_],\w,记忆方法:word;
  7. 匹配非单字字符,\W,记忆方法:not word;
  8. 匹配空白字符,包括空格、制表符、换页符和换行符,\s,记忆方法:space;
  9. 匹配非空白字符,\S,记忆方法:not space

# 匹配次数

  1. 元字符?代表了匹配 1 个字符或 0 个字符,例如同时匹配colorcolour,可以使用/colou?r/
  2. 元字符*用来表示匹配同个字符出现 0 次或多次的情况。
  3. 元字符+适用于要匹配同个字符出现 1 次或多次的情况。
  4. 特定的重复次数:使用元字符{}用来给重复匹配设置精确的区间范围。如想匹配 3 次'a',使用/a{3}/,如果匹配至少两次'a'用/a{2,}/,详细信息:
    • {x}: x 次
    • {min, max}: 介于 min 次到 max 次之间
    • {min, }: 至少 min 次
    • {0, max}: 至多 max 次

# 单词与字符串边界

单词是构成句子和文章的基本单位,一个常见的使用场景是把文章或句子中的特定单词找出来。这时需要用边界正则表达式\b,例如对于例句:

The cat scattered his food all over the room.

想找 cat 这个单词,如果只是使用/cat/,会同时匹配到 cat 和 scattered 这两处文本。这时需使用边界正则表达式\b,其中 b 是 boundary 的首字母。在正则引擎里它其实匹配的是能构成单词的字符(\w)和不能构成单词的字符(\W)中间的那个位置。上面的例子改写成/\bcat\b/这样就能匹配到 cat 这个单词了。

对于字符串来说,元字符^用来匹配字符串的开头。而元字符$用来匹配字符串的末尾。

# 分组

其中分组体现在:所有以()元字符所包含的正则表达式被分为一组,每一个分组都是一个子表达式,它也是构成高级正则表达式的基础。如果只是使用简单的(regex)匹配语法本质上和不分组是一样的,如果要发挥它强大的作用,往往要结合回溯引用的方式。

所谓回溯引用(backreference)指的是模式的后面部分引用前面已经匹配到的子字符串。你可以把它想象成是变量,回溯引用的语法像\1,\2,....,其中\1表示引用的第一个子表达式,\2表示引用的第二个子表达式,以此类推。而\0则表示整个表达式

# python使用正则表达式

# python使用正则提取信息

import re

p = re.compile("正则表达式")  # 对正则表达式字符串进行编译
更新于: 1/9/2022, 9:39:34 PM