1, 元字符介绍
"^" :^ 会匹配行或者字符串的起始位置, 有时还会匹配整个文档的起始位置.
"$" :$ 会匹配行或字符串的结尾
"\b" : 不会消耗任何字符只匹配一个位置, 常用于匹配单词边界 如 我想从字符串中 "This is Regex" 匹配单独的单词 "is" 正则就要写成 "\bis\b"
"\d": 匹配数字
"\w": 匹配字母, 数字, 下划线
"\s": 匹配空格
".": 匹配除了换行符以外的任何字符
"[abc]": 字符组 匹配包含括号内元素的字符
2, 反义(写法很简单改成大写就行了, 意思与原来的相反)
"\W" 匹配任意不是字母, 数字, 下划线 的字符
"\S" 匹配任意不是空白符的字符
"\D" 匹配任意非数字的字符
"\B" 匹配不是单词开头或结束的位置
"[^abc]" 匹配除了 abc 以外的任意字符
3, 量词
先解释关于量词所涉及到的重要的三个概念
贪婪(贪心) 如 "*" 字符 贪婪量词会首先匹配整个字符串, 尝试匹配时, 它会选定尽可能多的内容, 如果 失败则回退一个字符, 然后再次尝试回退的过程就叫做回溯, 它会每次回退一个字符, 直到找到匹配的内容或者没有字符可以回退. 相比下面两种贪婪量词对资源的消耗是最大的,
懒惰(勉强) 如 "?" 懒惰量词使用另一种方式匹配, 它从目标的起始位置开始尝试匹配, 每次检查一个字符, 并寻找它要匹配的内容, 如此循环直到字符结尾处.
占有 如 "+" 占有量词会覆盖事个目标字符串, 然后尝试寻找匹配内容 , 但它只尝试一次, 不会回溯, 就好比先抓一把石头, 然后从石头中挑出黄金
"*"(贪婪) 重复零次或更多( 例如 "aaaaaaaa" 匹配字符串中所有的 a 正则: "a*" 会出到所有的字符 "a")
"+"(懒惰) 重复一次或更多次(例如 "aaaaaaaa" 匹配字符串中所有的 a 正则: "a+" 会取到字符中所有的 a 字符, "a+" 与 "a*" 不同在于 "+" 至少是一次而 "*" 可以是 0 次)
"?"(占有) 重复零次或一次(例如 "aaaaaaaa" 匹配字符串中的 a 正则 : "a?" 只会匹配一次, 也就是结果只是单个字符 a)
"{n}" 重复 n 次(例如从 "aaaaaaaa" 匹配字符串的 a 并重复 3 次 正则: "a{3}" 结果就是取到 3 个 a 字符 "aaa")
"{n,m}" 重复 n 到 m 次(例如正则 "a{3,4}" 将 a 重复匹配 3 次或者 4 次 所以供匹配的字符可以是三个 "aaa" 也可以是四个 "aaaa" 正则都可以匹配到)
"{n,}" 重复 n 次或更多次
4, 懒惰限定符
"*?" 重复任意次, 但尽可能少重复
"+?" 重复 1 次或更多次, 但尽可能少重复
"??" 重复 0 次或 1 次, 但尽可能少重复
"{n,m}?" 重复 n 到 m 次, 但尽可能少重复
"{n,}?" 重复 n 次以上, 但尽可能少重复
5, 分组
()正则中捕获分组其实就是一个括号内的内容
|: 匹配多个字符串或表达式
转义字符 (\) 和原始字符串(r)
来源: http://www.bubuko.com/infodetail-3345838.html