加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式基础知识01

发布时间:2020-12-14 01:32:07 所属栏目:百科 来源:网络整理
导读:使用元字符 匹配数字: d [0-9] D [^0-9] 匹配字母数字 w [0-9a-zA-Z_] 注意:包括下划线 W [^0-9a-zA-Z_] 匹配空白字符 s 任何空白字符[fnrtv] S 任何非空白字符[^fnrv] [b] 匹配退格符是一个特例 匹配十六进制是使用x前缀加数字 x0A 匹

使用元字符

匹配数字:

d

[0-9]

D

[^0-9]

匹配字母数字

w

[0-9a-zA-Z_] 注意:包括下划线

W

[^0-9a-zA-Z_]

匹配空白字符

s

任何空白字符[fnrtv]

S

任何非空白字符[^fnrv]

[b]

匹配退格符是一个特例

匹配十六进制是使用x前缀加数字 x0A 匹配n

八进制使用前缀加数字

例子:

? 匹配邮箱:[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中空格是nr,在Linux/Unix中空格是n),单独匹配各自系统中的空行是:Windows—‘rn rn’ Linux/Unix—‘nn’;因此使用一个模式可以表示为: [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>]

位置匹配

元字符

含义

bwordb

匹配单词边界,匹配单词长度为4,仅仅匹配单词word本身

his cap and cape from capsized

例子:

bcapb 将匹配cap

bcap 将匹配以cap开头的任意单词

capb 匹配以cap结尾的任意单词

BB

不匹配单词边界,

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}

模式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})|{1d{2})|(2[0-4]d)(25[0-5])).){3}((d{1,2})|(1d{2})|(2[0-4)|(25[0-5]))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读