正则表达式常用语法一览
Posted 我要闭嘴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式常用语法一览相关的知识,希望对你有一定的参考价值。
正则表达式是一种标记模式,可以用来高效通配文本。
网络爬虫的编写中需要大量用到正则表达式来通配网页内容,以便提高爬取效率与准确率。
以下主要记录一些常用的正则表达式语法。
1. ".":
用来通配一个单一字符,不限定范围,必须出现一次。
2. "[]":
"[]"中提供了一个备选字符集,其中的字符出现必须出现一次。
3. "-":
一般使用在"[]"中,用来连接一系列连贯字符,例如"A-Z"表示A到Z的26个大写字母,"a-z"表示a到z的26个小写字母,"0-9"表示0到9的10个数字。
4. "^":
"^"当使用在"[]"中,且紧挨"["后时,代表"取非"的反向选择含义。例如"[0-9]"与"[^0-9]"的意义正好相反。
5. "\":
用来转义元字符,代表字符本身,而非其代表的标记意义。
6. 空白元字符:
[\b]:回退(并删除)一个字符(Backspace键)
\f:换页符
\n:换行符
\r:回车符
\t:制表符(tab键)
\v:垂直制表符
\s:任何一个空白字符(等价于[\f\n\r\t\v])
\S:任何一个非空白字符(等价于[^\f\n\r\t\v])
7. 特定字符元字符:
\d:任何一个数字字符(等价[0-9])
\D:任何一个非数字字符(等价[^0-9])
\w:任何一个字母数字字符(大小写均可)或下划线字符(等价于[a-zA-Z0-9_])
\W:任何一个非字母数字或下划线字符(等价于[^a-zA-Z0-9_])
8. 16或8进制:
十六进制数值要用前缀\x给出,八进制数值要用前缀\0给出。
9. POSIX字符类:
[:alnum:]:任何一个字母或数字(等价于[a-zA-Z0-9])
[:alpha:]:任何一个字母(等价于[a-zA-Z])
[:blank:]:空格或制表符(等价于[\t ])
[:cntrl:]:ASCII控制字符(ASCII 0到31,再加上ASCII 127)
[:digit:]:任何一个数字(等价于[0-9])
[:graph:]:和[:print:]一样,但不包括空格
[:lower:]:任何一个小写字母(等价于[a-z])
[:print:]:任何一个可打印字符
[:punct:]:既不属于[:alnum:]也不属于[:cntrl:]的任何一个字符
[:space:]:任何一个空白字符,包括空格(等价于[^\f\n\r\t\v ])
[:upper:]:任何一个大写字母(等价于[A-Z])
[:xdigit:]:任何一个十六进制数字(等价于[a-fA-F0-9])
10. 多重匹配:
"+":在字符或字符集合后加上"+",匹配该字符或字符集合(至少一个;不匹配零个字符的情况)。
"*":在字符或字符集合后加上" *",匹配该字符或字符集合连续出现0次或多次。
"?":匹配一个字符或字符集合的0次或一次出现,最多不超过一次。
"|":代表或的关系,匹配符号前或后的表达式。
"{}":在字符或字符集合后加上"{}",当为单一数字时,表示重复匹配次数精确值;当出现"数字, 数字"时,表示为重复匹配次数设定一个最小值和一个最大值;当出现"数字, "时,代表给出一个最小重复次数。
11. 贪婪型字符与其懒惰型版本:
"*","+","{n, }"后加上"?"字符,使之变为懒惰型元字符,防止过度匹配。
12. 位置匹配:
"\b":匹配一个字符或字符集合位于一个单词的开始或结尾。
"\B":匹配一个字符或字符集合前后都不是单词边界的字符。
"^":当在一个字符集合的外部并位于一个模式的开头,匹配字符串的开头。"$":定义字符串的结尾。
"(?m)":启用分行匹配模式,使得正则表达式引擎把行分隔符当做一个字符串分隔符来对待。
13. 子表达式:
子表达式是一个更大的表达式的一部分,把一个表达式划分为一系列子表达式的目的是为了把那些子表达式当作一个独立元素来使用,必须使用(和)括起来。
常见用途包括:对重复次数元字符的作用对象做出精确的设定和控制;对|操作符的or条件做出准确的定义;允许进行多层嵌套。
14. 回溯引用:
在一段具有子表达式的正则表达式中,使用"\数字"的方式,回溯引用子表达式所匹配文档,数字代表子表达式的序号。
15. 前后查找:
必须用在一个子表达式中,其后跟需要匹配的文本。相关文本匹配,但不会包括在最终的搜索结果内。
(?=):正向前查找
(?!):负向前查找
(?<=):正向后查找
(?<!):负向后查找
16. 嵌入条件:
使用格式:(?(backreference)true-regex|false-regex)
backreference使用数字,一般用来表示条件之前正则表达式中子表达式的序号。
以上内容主要来自于「正则表达式-必知必会」(ISBN: 978-7-115-37799-9)的读书笔记,原书有很多例子且有详细解释,推荐有兴趣的朋友阅读原书。
以上是关于正则表达式常用语法一览的主要内容,如果未能解决你的问题,请参考以下文章