Skip to content

正则表达式

正则表达式(Regular Expression)用于在文本中匹配、查找和替换特定模式。Legado 源规则中,以 : 开头的规则即为正则表达式,可用于书籍列表和目录列表的提取。

基本匹配

正则表达式是我们用于在文本中检索字母和数字的模式。例如正则表达式 cat,表示:字母 c 后面跟着一个字母 a,再后面跟着一个字母 t

正则表达式通常区分大小写,因此 Cat 与字符串 "cat" 不匹配。

元字符

元字符是正则表达式的基本组成元素。

元字符说明
.匹配除换行符以外的任意字符
[ ]字符类,匹配方括号中包含的任意字符
[^ ]否定字符类,匹配方括号中不包含的任意字符
*匹配前面的子表达式零次或多次
+匹配前面的子表达式一次或多次
?匹配前面的子表达式零次或一次
{n,m}匹配前面字符至少 n 次,但不超过 m 次
(xyz)字符组,按照确切的顺序匹配字符 xyz
|分支结构,匹配符号之前的字符或后面的字符
\转义符
^匹配行的开始
$匹配行的结束

英文句号

. 可以匹配任意单个字符,但不会匹配换行符。例如 .ar 匹配 "car"、"par"、"gar"。

字符集

字符集(字符类)使用方括号指定。例如 [Tt]he 匹配 "The" 或 "the"。

否定字符集^ 在方括号内出现时会取消字符集。例如 [^c]ar 匹配除了 "car" 以外的 "par"、"gar"。

重复

  • 星号 *:匹配上一个匹配规则的零次或多次。例如 [a-z]* 匹配一行中任意数量的小写字母。
  • 加号 +:匹配上一个字符的一次或多次。例如 c.+t 匹配 "cat sat on the mat"。
  • 问号 ?:表示前一个字符是可选的。例如 [T]?he 同时匹配 "The" 和 "he"。

花括号(量词)

用于指定字符或一组字符可以重复的次数。例如 [0-9]{2,3} 匹配至少 2 位但不超过 3 位数字。

字符组

写在圆括号内的子模式 (...)。例如 (ab)* 匹配零个或多个 "ab"。(c|g|p)ar 匹配 "car"、"gar" 或 "par"。

分支结构

| 用来定义分支结构。字符集只在字符级别上有作用,而分支结构在表达式级别上依然可以使用。

转义特殊字符

使用 \ 来转义下一个字符。例如 (f|c|m)at\.? 匹配 "fat"、"cat"、"mat" 以及可选的 "." 字符。

定位符

  • ^ 检查匹配字符是否是起始字符
  • $ 检查匹配字符是否是最后一个字符

简写字符集

简写说明
.匹配除换行符以外的任意字符
\w匹配所有字母和数字的字符:[a-zA-Z0-9_]
\W匹配非字母和数字的字符:[^\w]
\d匹配数字:[0-9]
\D匹配非数字:[^\d]
\s匹配空格符:[\t\n\f\r\p{Z}]
\S匹配非空格符:[^\s]

断言

符号说明
?=正向先行断言
?!负向先行断言
?<=正向后行断言
?<!负向后行断言

正向先行断言:匹配特定模式之后的内容。例如 (T|t)he(?=\sfat) 匹配 "The" 或 "the" 后面跟着 "fat" 的情况。

负向先行断言:获取不匹配表达式的内容。例如 (T|t)he(?!\sfat) 匹配不在 "fat" 前面的 "The" 或 " the"。

正向后行断言:获取在特定模式之前的匹配内容。例如 (?<=(T|t)he\s)(fat|mat) 匹配在 "The" 或 "the" 之后的 "fat" 和 "mat"。

负向后行断言:获取不在特定模式之前的匹配内容。

标记

标记说明
i不区分大小写
g全局搜索
m多行匹配

常用正则表达式

用途正则表达式
数字\d+$
用户名^[\w\d_.]{4,16}$
字母数字字符^[a-zA-Z0-9]*$
小写字母[a-z]+$
大写字母[A-Z]+$
HTML 标签<[^>]+?>
求更求转发致谢[\((【].*?[求更谢乐发推].*?[】)\)]
查找最新章节您可以.*?查找最新章节
PS/ps(?i)ps\b.*

基于 Apache-2.0 许可发布