语法
基本 | |
---|---|
. | 任意单个字符 |
| | 逻辑或 |
[] | 字符集合 |
[^] | 字符集合求非 |
- | 区间定义 |
\ | 字符转义 |
() | 定义一个子表达式 |
数量 | |
---|---|
* | 0次或多次,懒惰模式 *? |
+ | 1次或多次,懒惰模式 +? |
? | 0次或1次 |
{n} | n次 |
{m,n} | m次和n次之间 |
{n,} | n次以上,懒惰模式 {n,}? |
位置 | |
---|---|
^ | 开头(\A) |
$ | 结尾(\Z) |
< | 单词开头 |
> | 单词结束 |
\b | 单词边界 |
特殊 | |
---|---|
\t | 制表 Tab |
\v | 垂直制表符 Vertical tab |
\n | 换行 Line feed |
\r | 回车 Carriage Return |
\f | 换页 Form feed |
\s | 空白 space, \t, \n, \f, \r |
\d | 数字 [0-9] |
\w | 字母数字或下划线 [a-zA-Z_0-9] |
查找 (lookaround)
https://www.regular-expressions.info/lookaround.html
查找 | |
---|---|
?: | non capturing group |
?= | positive look ahead |
?! | negative look ahead |
?<= | positive look behind |
?<! | negative look behind |
- 括号中的数字
(?<=\()[0-9]+(?=\))
(?!\()[0-9]+(?<!\))
替换匹配文本
- Java, JetBrains, vscode
$0
- PHP, EmEditor
\0
- JavaScript
$&
Reinserting Matched Text in The Replacement Text
常用匹配
中国18位身份证号
1 | \d{17}(\d|X|x) |
中国手机号码
1 | 1[34578][012356789]\d{8}|134[012345678]\d{7} |
邮箱
1 | ^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$ |
URL地址
1 | (https?:\/\/)?([\w\-])+\.{1}([a-zA-Z]{2,63})([\/\w-]*)*\/?\??([^#\n\r]*)?#?([^\n\r]*) |
IP地址
1 | /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ |
1 | [\u4e00-\u9fa5] |
提取示例
提取括号中的数字
1 | (?<=\()[0-9]+(?=\)) -> \0 |
${param.xxx}
批量替换为 ${fn:escapeXml(param.xxx)}
1 | (?<=\$\{)param\..*?(?=\}) |
tsv内容转SQL insert
1 | 110000 a 1 北京市 |
vim中的使用
去除空行
1 | %s/^\s*\n/ |
去除行尾空格
1 | %s/\s\+\n/\r |
去除#注释行
1 | %s/^\s*#.*\n/ |
换行的文本转字符串拼接
1 | %s/\s*\n/" \+\r" |
‘逗号分隔行’ 与 ‘单行逗号分隔’ 转换
1 | %s/,\s*\n/,[ ] |
JavaScript中的使用
有两种方法可以创建正则表达式:通过字面量/pattern/flags
,或new RegExp(pattern [, flags])
。flags值可以是i(忽略大小写)g(全局匹配)m(多行匹配)
字面量方式判断是否全部数字组成:/^\d+$/.test('12a')
表达式方式
1 | var pat = new RegExp(this.currentL1 + "[\\d]{2}00"); |
Perl中的使用
下划线转驼峰
1 | my $n = 'mastering_regular_experssions'; |
使用
提取字幕内容
1 | 替换时间 ^\d\d:.*\n |
替换标注
1 | \[\d+\] |