[b]正则表达式[/b]
[b]元字符[/b]
\b
代表着单词的开头或结尾,也就是单词的分界处。
.
匹配除了换行符以外的任何字符
*
重复零次或更多
.*//任意数量的不包含换行的字符
\d
匹配一个数字
\w
匹配字母,数字,下划线或汉字
\s
匹配空格
[abc]
匹配包含括号内元素的字符
^
会匹配行或者字符串的起始位置,有时还会匹配整个文档的起始位置。
$
会匹配行或字符串的结尾
[b]元字符反义[/b]
[b]字符转义[/b]
要查找元字符相关的要加"\"
[b]量词[/b]
[b]分枝条件[/b]
|
相当于或的意思
[b]分组[/b]
()
就是这个条件使用多少次
[b]捕获分组[/b]
其实就是一个括号内的内容
[b]后向引用[/b]
如果后而有相同的内容则可以直接引用前面定义的捕获组,以简化表达式
(\d)\d\1 //这里的"\1"就是对"(\d)"的后向引用
[b]零宽断言[/b]
[b]元字符[/b]
\b
代表着单词的开头或结尾,也就是单词的分界处。
"This is Regex"
"\bis\b" //只想匹配“is”这个单词,This中的“is”不匹配
.
匹配除了换行符以外的任何字符
*
重复零次或更多
.*//任意数量的不包含换行的字符
\d
匹配一个数字
\d\d //匹配2个数字
\d{8} //匹配8个数字
\w
匹配字母,数字,下划线或汉字
\s
匹配空格
[abc]
匹配包含括号内元素的字符
[a-z]//匹配a至z的所以字母
^
会匹配行或者字符串的起始位置,有时还会匹配整个文档的起始位置。
$
会匹配行或字符串的结尾
^\d{5,12}$ //QQ号必须为5位到12位数字
[b]元字符反义[/b]
"\W" 匹配任意不是字母,数字,下划线 的字符
"\S" 匹配任意不是空白符的字符
"\D" 匹配任意非数字的字符
"\B" 匹配不是单词开头或结束的位置
"[^abc]" 匹配除了abc以外的任意字符
[b]字符转义[/b]
要查找元字符相关的要加"\"
\. //匹配.
\* //匹配*
[b]量词[/b]
"*"(贪婪) 重复零次或更多
"+"(懒惰) 重复一次或更多次
"?"(占有) 重复零次或一次
"{n}" 重复n次
"{n,m}" 重复n到m次
"{n,}" 重复n次或更多次
[b]分枝条件[/b]
|
相当于或的意思
[b]分组[/b]
()
就是这个条件使用多少次
(\d{1,3}\.){3}\d{1,3} //匹配IP地址
[b]捕获分组[/b]
其实就是一个括号内的内容
[b]后向引用[/b]
如果后而有相同的内容则可以直接引用前面定义的捕获组,以简化表达式
(\d)\d\1 //这里的"\1"就是对"(\d)"的后向引用
"zery zery" 正则 \b(\w+)\b\s\1\b 所以这里的"\1"所捕获到的字符也是 与(\w+)一样的"zery",为了让组名更有意义,组名是可以自定义名字的
"\b(?<name>\w+)\b\s\k<name>\b" 用"?<name>"就可以自定义组名了而要后向引用组时要记得写成 "\k<name>";自定义组名后,捕获组中匹配到的值就会保存在定义的组名里
"(exp)" 匹配exp,并捕获文本到自动命名的组里
"(?<name>exp)" 匹配exp,并捕获文本到名称为name的组里
"(?:exp)" 匹配exp,不捕获匹配的文本,也不给此分组分配组号
[b]零宽断言[/b]
"(?=exp)" 匹配exp前面的位置
如 "How are you doing" 正则"(?<txt>.+(?=ing))" 这里取ing前所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为"How are you do";
"(?<=exp)" 匹配exp后面的位置
如 "How are you doing" 正则"(?<txt>(?<=How).+)" 这里取"How"之后所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为" are you doing";
"(?!exp)" 匹配后面跟的不是exp的位置
如 "123abc" 正则 "\d{3}(?!\d)"匹配3位数字后非数字的结果
"(?<!exp)" 匹配前面不是exp的位置
如 "abc123 " 正则 "(?<![0-9])123" 匹配"123"前面是非数字的结果也可写成"(?!<\d)123"