regex#
一次匹配一个的字符#
表达式 |
含义 |
---|---|
|
任意字符 |
|
(在…之内)包含 |
|
(在…之内)从 |
|
(除…之外)除 |
|
(并) |
|
(交) |
|
空白符(空格、tab、换行、换页、回车) |
|
非空白符( |
|
数字( |
|
非数字( |
|
词字符( |
|
非词字符( |
|
制表符Tab |
|
换行符 |
|
回车 |
|
反斜杠 |
一次匹配多个字符#
贪婪型 |
勉强型 |
占有型 |
如何匹配 |
---|---|---|---|
|
|
|
一个或零个 |
|
|
|
零个或多个 |
|
|
|
一个或多个 |
|
|
|
恰好 |
|
|
|
至少 |
|
|
|
|
确定字符出现的位置#
表达式 |
含义 |
---|---|
|
一行的开始 |
|
一行的结束 |
|
词的边界 |
|
非词的边界 |
|
前一个匹配的结束 |
分组的概念#
如果我们对匹配到的结果进行一些更加复杂的操作,需要了解 分组 的概念。
如果想访问第一个分组,就用 $1
,如果想访问第二个分组,就用 $2
,以此类推,最大是 $9
。这里说的分组就是小括号,一个小括号代表一个分组。可以参考下面这段 JS 代码理解分组的应用:
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
str.replace(re, "$2, $1"); // "Smith, John"
RegExp.$1; // "John"
RegExp.$2; // "Smith"
另外一个场景是进行批量文本替换,比如用 Notepad++ 编辑文档时,针对下面这段文本,想要在以 -
开头的单词两侧加上双引号,那么可以使用 图 23 的规则进行批量替换。
| -Ox | 最大化选项 |
| -Og | 启用全局优化 |
| -Oy[-] | 启用框架指针省略 |
| -Oi | 启用内建函数 |