正则表达式必知必会
2023-10-25 12:42:43 6 举报
《正则表达式必知必会》读书笔记
作者其他创作
大纲/内容
第1章入门
全局
大小写
2.1 匹配纯文本
.
2.2 任意字
转义 \\
2.3 匹配特殊字符
第2章 匹配单个字符
[abc]
3.1 匹配多个字符中的一个
[0-9A-Za-z]
3.2 利用字符区间
注意 ^的效果将作用于给定字符集合里的所有字符或字符区间,而不是仅限于紧跟在^字符后面的那一个字符或字符区间
^的非效果只能是在[]里面有效果?
[^0-9]
3.3 取非匹配
第3章 匹配一组字符
what:元字符是一些在正则表达式里有着特殊含义的字符
4.1 对特殊字符进行转义
注意: [\\b] 与 \\b 的区别
windows 文本结束标签:\\,Unix/Linux:\
4.2 匹配空白字符
任何一个数字字符:\\d 等价 [0-9]
任何一个非数字:\\D 等价 [^0-9]
匹配数字(与非数字)
注意:包含了下划线
任何一个字母数字下划线:\\w 等价 [0-9a-zA-Z_]
任何一个非字母数字下划线:\\W 等价 [^0-9a-zA-Z]
匹配字幕和数字
注意:不包含 [\\b]
任何一个空白字符:\\s 等价 [\\f\\\\t\\v]
任何一个非空白字符:\\S 等价 [^\\f\\\\t\\v]
匹配空白字符
一般不会遇到,可能特殊场景会遇到
十六进制 ,\\x 开头 + 十六进制数:\\x0A 等价 \(ASCII字符10)
八进制,\\0开头 + 八进制数: \\011 等价 \\t (ASCII字符9)
匹配十六进制或者八进制数
4.3 匹配特定字符类别
啊,没用过啊
子主题
44 使用POSIX字符类
第4章 使用元字符
匹配一个或多个:+
匹配零个或多个:*
匹配零个或一个:?
5.1 有多少个匹配
{3}
为重复匹配设定一个精确值
重复匹配设置区间
比精确值多了个逗号
匹配至少多少次
5.2 匹配重复次数
*
+
贪婪匹配
*?
+?
懒惰匹配
懒惰配置即在贪婪匹配后加一个 ?
5.3 防止过度匹配
第5章 重复匹配
位置匹配用来解决在什么地方进行字符串匹配操作的问题
6.1 边界
注意跟 [\\b] 区分
\\b \\B
6.2 单词边界
^ $
(?m)有的正则实现不支持
多行匹配模式
单行:整个文本都是一行
多行:有换行符后算新的一行
多行 vs 单行匹配
多行
6.3 字符串边界
第6章 位置匹配
what:把一个表达式当做一个独立的元素来使用
how:用 () 括起来
(19|20)\\d{2} 以19或20开头的任何一个4位数字都将与这个模式相匹配
把必须匹配的情况考虑周全并写出一个匹配结果符合预期的正则表达式很容易,但把不需要匹配的情况也考虑周全并确保它们都将被排除在匹配结果以外往往要困难得多
第7章 字表达式
waht:用来引用前面出现过的字表达式
注:用 () 起来的叫子表达式
how:\\0 == 整个正则表达式,\\1 === 前面出现的第一个子表达式,\\5 === 前面第5个子表达式
需要分2个表达式写,一个用来搜索,一个用来替换
js里面,用$n 来表示位置,有的是\ 来表示位置(n为一个数字)
大小写转换:
8.3 回溯引用在替换操作中的应用
第8章 回溯引用 backrefrence
what:查找就是必须匹配规则,但是不跟着返回,又叫不消费(consume)
向前查找:语法上是一个以?= 开头的子表达式
语法:?<=
有些语言不支持
向后查找
第9章 前后查找
?
?=
?<=
根据回溯引用来进行条件处理
根据前后查找来条件处理
使用?
e.g. (?(1)\\s*</[Aa]>)是一个回溯引用条件——?(1)的含义是:如果第一个回溯引用(具体到本例存在,则使用\\s*</[Aa]>继续进行匹配
注意 :?(1)检查第一个回溯引用是否存在。在条件里,回溯引用编号(本例中的1)不需要被转义。因此,?(1)是正确的,?(\\1)不正确(但后者通常也能工作)。
语法
1.2 表达式里的特定条件
第10章 嵌入条件
正则表达式必知必会
0 条评论
回复 删除
下一页