1) 需要转义的特殊字符 $ ( ) * + . ? [ \ ^ { 在文本中遇到 这几种特殊字符想转为文本,需要通过反斜杠\
转义
\d提取数字【0-9】
\b:单词边界
\B非单词边界
\D提取非数字(空格也可以匹配)
\S:匹配非空字符‘
\s:匹配空格,换行符,不匹配特殊符号
\W:除了【0-9,A-Z,a-z】不可以匹配
\w:【0-9,A-Z,a-z】
. :除了换行符\n不行,其他都可以匹配
?: 0-1
+:1-正无穷
*:0-正无穷
^aaa:取反(不是aaa)
^:开头
$;以…结尾
[:upper:] 或 [A-Z]
- [:lower:] 或 [a-z]
例子: grep . demo 谁都可以匹配
正则表达式 默认贪婪
断言:中收法
正则表达式的先行断言和后行断言一共有 4 种形式:
x(?=y) 零宽正向先行断言。x后面紧跟y
x(?!y 零宽负向先行断言 。x前面不紧跟y
x(?<=y) 零宽正向后行断言
x(?<!y) 零宽负向后行断言
group分组
0:匹配一句话所以的值
1 :匹配第一个括号里面的值
2:匹配第二个括号里面的值
group 里面加?:(不保存分组)
例子:r1=re.search(‘c?<=(?:herf=“)).{1.200}(?=(”))’,a)
h回溯
/ \d+\b /贪婪:一直匹配,直到匹配不上。–回溯;从后往前
/ d+?\b /惰性:置匹配一个,其他不管–回溯:从前往后
文本是 123a
贪婪回溯:123 12 1
惰性:1 12 123
我们在一些场景里需要将7654321输出成7,654,321这样的格式,这就是千分位
12345678’.replace(/\B(?=(\d{3})+)/g,function(){console.log(arguments);return ‘|’})
\B非单词边界,1右边位置 \d提取数字{3}取三个数字 +绑一块
重复分组
假定用这个正则去匹配 1234567890
分组小括号\d\d\d
工作步骤:
第一次匹配,捕获到 123
,退出分组
. 第二次匹配,捕获到 456
, 覆盖上一次捕获的123
,退出分组
. 第三次匹配,捕获到 789
,覆盖上一次捕获的456
,退出分组
退出重复分组,结束
最后输出789
如果想要获得所有结果,就要把重复匹配放进分组中 / ( (\d\d\d) {3}) /
order by 检测列进行联合查询
列不同直接报错
203或者204
正则表达式过滤SQS
用科学技术法1e1把\b绕过了
绕过了
列又超过范围了
通过group 生成两列 二三出数据
绕的这个正则表达式