> For the complete documentation index, see [llms.txt](https://yangsx95.gitbook.io/notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yangsx95.gitbook.io/notes/programming-language/script-language/regex.md).

# Regex

相关网站：

* <https://www.runoob.com/regexp/regexp-tutorial.html>
* <https://regex101.com>
* <https://codejiaonang.com/>

正则表达式(regular expression)描述了一种字符串匹配的模式（pattern），可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

在正则表达式中，可以将字符分为以下几种类型：

1. 普通字符，是指没有特殊含义的非空白的字符，比如数字、字母、还有一些标点符号以及其他符号
2. 非打印字符，比如`\n`，`\t`等，这些字符可以直接在正则表达式中使用
3. 特殊字符，是已经被正则表达式赋予特殊含义的字符，比如`*`、`.`、`?`等
4. 限定符，是用于限定次数才满足匹配的特殊字符，目前共有以下几种：`*`、`?`、`+`、`{n}`、`{n,}`、`{n, m}`、`{, m}`
5. 运算符，表示多个匹配条件之间的关系，比如 `|`或
6. 元字符，以反斜杠开头，是正则表达式为我们定义的一系列常用的字符类，比如`\d`代表数字字符，`\w`代表单词字符，`\s`代表空白字符；另外，这些元字符对应的大写代表对他们的取反，比如`\D`代表非数字字符。 另外，`^`代表字符串开头、`$`代表字符串结尾，如果是多行匹配，他们则代表行为和行首
7. 修饰符，用于指定正则表达式的额外匹配策略：`/pattern/flags`，比如不区分大小写匹配全局所有的符合条件的内容：`/pattern/ig`，比如逐行匹配（让`^`，`$`匹配每一行的行为和行首）

## 贪婪匹配

## 分组和分组引用

## 前置断言
