《正则表达式必知必会》读书笔记
匹配单个字符串
- 用“ . ”来匹配任意单个字符
- 需要找“ . ”本身使用“\.”,"\"为特殊字符序列的开头
匹配一组字符串
-
匹配多个字符中的某一个
- 使用“ [ ” 和 “ ] ” 来定义一个字符集合
-
利用字符集和区间
- [0-9] 和 [A-Z] 和 [A-Za-z0-9]
-
取非匹配
- [^0-9a-b] 注意:" ^ " 是作用于整个区间,而非紧跟后面的
使用元字符
-
匹配空白字符
- \B —— 回退并删除一个字符(BackSpace键)\
- \f —— 换页符
- \n —— 换行符
- \r —— 回车符
- \t —— tab符
- \v —— 垂直tab符
-
匹配数字
- \b —— 任意一个数字字符(等价于[0-9])
- \D —— 任意一个非数字字符(等价于[^0-9])
-
匹配字母和数字(与非字母和数字)
- \w —— 任意一个字母(大小写都可),数字,下划线(等价于[a-zA-Z0-9_])
- \W —— 任意一个非字母,数字或非下划线的字符(等价于[^a-zA-Z0-9_])
-
匹配空白字符(于非空白字符)
- \s —— 任意一个空白字符(等价于[\f\n\r\t\v])
- \S —— 任意一个非空白字符(等价于[^\f\n\r\t\v])
-
匹配十六进制货八进制数值
-
使用POSIX字符类 (javascript不支持)
重复匹配
-
匹配一个或多个字符
- 使用 “ + ” 表示同一个字符(或字符集合)的多次重复, 至少需要匹配一个字符。
- 字符集合中的元字符会被解析为普通字符,例如:[\w.] 等价于 [\w.]
-
匹配零个或多个字符
- 使用 “ * ” 表示同一个或多个字符(或字符集合)的多次重复。
- 可以把 “ * ” 理解为 “在我前面的字符或字符集合是可选的”
- “ + ” 和 “ * ” 区别是前者至少需要匹配一个字符,后者可以不出现
-
匹配零个或多个字符
- 使用 “ ? ” 表示同一个字符(或字符集合)的零次或一次出现。
匹配的重复次数
-
为重复匹配的次数设定一个精确的值
- 使用“ { ” 和 “ } ” 来为前面一个字符(或字符集合)重复匹配次数设定一个精确的值。
- 例子: [3] [1] [2]
- 正则:
(\[\d\]){3}
-
为重复匹配次数设定一个区间
- 使用“ { ” 和 “ } ” 来为前面一个字符(或字符集合)重复匹配次数设定一个区间的值。
- 例子:
- [3] [1] [2]
- myArray[0]
- 正则:
(\[\d\]){1,3}
-
匹配 “至少重复多少次”
- 例子:
- [3] [1] [2]
- myArray[0]
- 正则:
(\[\d\]){1,}
- 例子:
-
匹配 贪婪型元字符 和 懒惰型元字符
- 贪婪型元字符 : 懒惰型元字符
-
- : *?
-
- : +?
-
{n,} : {n,}?
-
例子:需要取得元素标签
- BK and cK
- 正则:
<[Bb]>.*?
位置匹配
- 单词边界
- 使用 ** \b ** 来匹配一个单词的开始或结尾 ** \b ** 匹配这样的一个能构成单词的字符(字母,数字和下划线),等同于 ** \w **
- 例子: The cat acattered his food all over the room
- 正则:
\bcat\b
- 输出:cat #
- 使用 ** \B ** 表示不匹配一个单词的边界 等同于 ** \W ** #
- 字符串边界
- 使用 ** ^ ** 定义字符串的开头
- 例子: this is bad
- 正则:
^\s*<\?xml.*\?>
//对合法的空白自负做出妥善处理 # - 使用 ** (?m) ** 开启分行模式 分行模式吧分隔符当做一个字符串分隔符来对待 有许多正则表达不支持分行模式
- 例子: //a //b
- 正则:
(?m)^\s*//.*$
子表达时
- 使用 ** “( ” ** 和 ** “ ) ” ** 来表示子表达式
- 例子: 1983-03-13
- 正则:
(19|20)\d{2}
#
- ?使用子表达式的嵌套,应该按照先內后外的原则进行
回朔引用:前后一致匹配
- 使用 ** \数字 ** 表示表达式的后半部分引用在前半部分中定义的子表达式,可以想象变成变量
- 例子: of of and and
- 正则:
[ ]+(\w+)+[ ]+\1
- 替换模式 P85 需要继续了解
前后查找
- 正向前查找 ** ?= **
- 正向后查找 ** ?<= **
- 负向前查找 ** ?! **
- 负向后查找 ** ?<! **
javascript的正则 附录
- exec:匹配 RegEx
- match:匹配 字符串
- replace:替换 字符串
- split:分拆
- search:测试指定的字符串是否匹配字符串的方法
- test: 测试指定的字符串是否匹配RegEx的方法
javascript 命令行注意点
- g:激活全局搜索功能
- i:匹配不分字母大小写
- m:多行字符串
- s:单行字符串
- x:忽略空表字符
- $‘:将返回被匹配字符串前面的所有东西
- $`:将返回被匹配字符串后面你的所有东西
- $&:将返回被匹配到的所有东西
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。