在进行复杂的字符串匹配时,正则表达式往往是最常用的手段,最近在学习爬虫,所以将一些常用的正则表达式表示方式整理了下来.
1. 常见符号意义
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
符号 | 说明 |
---|---|
$ | 匹配输入字符串的结尾位置 |
() | 标记一个子表达式的开始和结束 |
[] | 表示一个中括号表达式开始和结束 |
* | 匹配之前子表达式出现0次或多次 |
+ | 匹配之前的子表达式出现1次或多次 |
. | 匹配除了换行符\n之外的任何简单字符 |
? | 匹配之前子表达式0次或者1次 |
转义 | |
丨 | 选择,二选一 |
^ | 匹配输入字符串的开始位置 |
{n} | 其中n为非负整数,表示之前子表达式匹配确定的n次;例如o{2},不可匹配'lod',可以匹配'lood' |
{n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 |
2. 常用正则表达式
Exp | 表示含义 |
---|---|
^[1-9]d*$ | 全部正整数 |
^[A-Za-z]+$ | 匹配由26个英文字母组成的字符串 |
邮箱验证 | ^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$ |
手机号:
^(17[0-9]|13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
身份证号:^\d{15}|\d{18}$
xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\.[x|X][m|M][l|L]$
IP地址:((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))
QQ号:[1-9][0-9]{4,}
域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
InternetURL:[a-zA-z]+://[^\s]*
或者^http://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$