正則表達式基础知识01
使用元字符
匹配数字:
|
\d |
[0-9] |
|
\D |
[^0-9] |
匹配字母数字
|
\w |
[0-9a-zA-Z_] 注意:包含下划线 |
|
\W |
[^0-9a-zA-Z_] |
匹配空白字符
|
\s |
不论什么空白字符[\f\n\r\t\v] |
|
\S |
不论什么非空白字符[^\f\n\r\v] |
|
[\b] |
匹配退格符是一个特例 |
匹配十六进制是使用\x前缀加数字 \x0A 匹配\n
八进制使用\0前缀加数字
样例:
Ø 匹配邮箱:[\w\.]+@[\w\.]+\.\w+ 但不是最好的。不完整
Ø 邮箱第一字母必须是字母或下划线。因此符合要求的的模式是:
\w*[\w.]+@[\w.]+\.\w+
Note:当在[]中使用.、+、*等元字符时会自己主动将其解释为普通字符。因此[\w.]和[\w\.]是一样的。
反复匹配
匹配一个或多个 +
匹配零个或多个 *
匹配零个或一个 ?
匹配反复次数 {n}、{n,m}、{n,}至少n次、{ ,m}最多m次【包括n,m】
样例:
Ø 匹配一个网页地址: https?://[\w./]+或http[s]?
://[\w./]+
Ø 匹配空行(在windows中空格是\n\r,在Linux/Unix中空格是\n),单独匹配各自系统中的空行是:Windows—‘\r\n \r\n’ Linux/Unix—‘\n\n’;因此使用一个模式能够表示为: [\r]?
\n[\r]?\n
Ø 检查日期格式是否正确(对日期值的检查应该在此之前确定):
\d{1,2}[-\/]\d{1,2}[-\/]\d{2,4}
防止过度匹配:+、*都是贪婪性,会依照最多的去匹配;要使用懒惰型版本号的元字符仅仅须要给贪婪型元字符加上?
后缀就可以。
+?、*?、{n,}?是各自贪婪型元字符相应的懒惰型元字符版本号
Ø 将HTML中的<B></B>标签中的内容匹配出来
<B>AK</B> and <B>HI</B>
模式1:[<B/>].*[</B>] 过度匹配
模式2:[<B/>].*?[</B>]
位置匹配
|
元字符 |
含义 |
|
\bword\b |
匹配单词边界,匹配单词长度为4,只匹配单词word本身 his cap and cape from capsized 样例: \bcap\b 将匹配cap \bcap 将匹配以cap开头的随意单词 cap\b 匹配以cap结尾的随意单词 |
|
\B\B |
不匹配单词边界。 colors and – coded pass-key 样例: \B-\B将匹配一个前后都不是单词边界的连字符 pass-key |
|
字符串的开头:^ 字符串的结尾:$
分行匹配模式:?m (multiline mode) |
使用行分隔符后,^除了匹配字符串的开头外,还可以匹配行分隔符(换行符)后面的開始位置,相同$还可以匹配行分隔符后面的结束位置。 (?m)必须出如今整个模式的前面 样例: 推断某一文件是不是xml文件: ^\s<\? xml .*\? > </html>标签后面不应该有其它内容了,进行合法检查: </[Hh][Tt][Mm][Ll]>\s*$ 匹配JavaScript中的全部凝视: (?m)^\s*//.*$ |
使用子表达式
元字符和字符是正則表達式的基本构件。子表达式是尅嵌套的。
样例
Ø 在html中使用 (None-breaking space)表示非换行型空格。须要匹配一个或多个 ;可是使用模式’ {2,}’是不正确的,须要对总体进行匹配因此使用括号“()”将其括起来做一个独立的元素使用。该模式就是子表达式,通常使用小括号括起来。
( ){2,}
Ø 匹配IP地址格式:
模式1:\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}
模式2:(\d{1,3}.){3}\d{1,3}
Ø 把用户记录中的年份数字打印出来
日志格式:
ID:042
SEX:M
DOB:1996-08-17
Status:Active
匹配模式:(19|20)\d{2}
Ø 使用子表达式的嵌套,匹配IP地址格式且匹配合法的IP第地址,在构造正則表達式一定要清楚相匹配什么。不像匹配什么:
匹配IP地址:不论什么一个1位或2位数字、不论什么一个以1开头的3位数字、不论什么一个以2开头、第二位数字在0~4的3位数字、不论什么一个以25开头,第3位数字在0~5之间的3为数字
模式:(((\d{1,2})|{1\d{2})|(2[0-4]\d)(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4)|(25[0-5]))
浙公网安备 33010602011771号