正則表達式基础知识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中使用&nbsp(None-breaking space)表示非换行型空格。须要匹配一个或多个&nbsp;可是使用模式’&nbsp;{2,}’是不正确的,须要对总体进行匹配因此使用括号“()”将其括起来做一个独立的元素使用。该模式就是子表达式,通常使用小括号括起来。

(&nbsp;){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]))

posted @ 2017-06-02 17:26  cxchanpin  阅读(206)  评论(0)    收藏  举报