第一篇笔记

【元字符】

/b   单词的开头或者结尾 也就是单词的分界处 只匹配一个位置
例如:查找Li /bLi/b
      查找Li后面不远处跟着一个Lucy  /bLi/b.*/bLucy/b


.  匹配除了换行符以外的任意字符 
*  *前面的内容可以连续重复任意次数以使整个表达式得到匹配
.* 任意数量的不包含换行的字符(换行符'/n' ASCII编码为10 十六进制0X0A)

/bLi/b.*/bLucy/b 先是一个单词Li 然后是任意个任意字符(但不是换行)最后是Lucy


/d 匹配一位数字(0,或1,或2,或3......)
- 不是元字符 只是一个连接符

例如:
0/d/d-/d/d/d/d/d/d/d/d匹配这样的字符串:以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字(也就是中国的电话号码。当然,这个例子只能匹配区号为3位的情形)。

也可以这样写这个表达式:0/d{2}-/d{8}。 这里/d后面的{2}({8})的意思是前面/d必须连续重复匹配2次(8次)。

$ 匹配行结束符
例如:good$ 能够匹配 he is good 但不能匹配 they are goods

^ 匹配一行的开始
例如:^when 能够匹配 when the time now,但不能匹配 he is sleep when it cry

/ 这是引用符 将这里列出的元字符 转化为普通字符进行匹配 /$被用来匹配美元符号而不是行尾     /. 用来匹配点字符 而不是任意字符的通配符 

【注释】

(?#comment)包含注释,
#后面到这一行结束的所有文本 将被当做注释 被忽略掉
2[0-4]/d(?#200-249)|25[0-5](?#250-255)|[01]?/d/d?(?#0-199)
#200-249,#250-255,#0-199 ,#后面的内容被注释掉
2[0-4]/d|25[0-5]|[01]?/d/d?

举例:
(?<=#注释<(/w+)>#注释).*#注释(?=#注释<///1>#注释)#注释
可以为以下格式:
(?<=                   #注释
<(/w+)>                #注释
).*                    #注释
(?=                    #注释
<///1>                 #注释
)                      #注释


【零宽断言】

断言用来声明一个应该为真的事实。只有当断言为真时才会继续进行匹配

用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像/b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言

(?=exp)  称为:零宽度正预测现行断言 
断言自身能出现的位置的后面能匹配表达式exp
例如:/b/m+(?=ing/b) 匹配 以ing结尾的单词的前面部分(除ing以外的部分),
I'm singing  while you're dancing 匹配的结果是:sing danc

(?<=exp) 称为:零宽度正回顾后发断言
断言自身出现的位置的前面能匹配表达式exp
例如:(?<=/bre)/w+/b 匹配 以re开头的单词的后半部分(除re以外的部分),
I'm reading  匹配的结果是: ading

((?<=/d)/d{3})+/b 给一个很长的数字中每三位加一个逗号(当然是从右边开始)
可以查找需要在前面和里面 添加逗号的部分
用它对1234567890进行查找的结果是234567890

(?<=/s)/d+(?=/s) 同时使用了两种断言  匹配以空白符间隔的数字(不包括这些空白符)

【小东西】

包含:[x]是匹配X任意字符
例如:a[out]e 能够匹配 aoe aue ate 但不能匹配are aee等

排除:[^x]是匹配除X外的任意字符
      [^0-6]匹配除0-6之外的所有字符,,即含有7,8,9的字符

/< /> 匹配词的开始(/<) 和结束 (/>)
例如:/< the /> 能够匹配for the wise 但不能匹配otherwise

/( /) 将/( 和 /)之间的表达式定义为组(group) 并且将匹配这个表达式的字符保存到一个临时区域,最多可以为9个, 可以用/1到/9的符号表示

| 将两个匹配条件进行逻辑 或(or)
例如:(him|her)匹配it belongs to him 或 it belongs to her

+ 匹配一个或多个在它之前的那个字符
例如:9+ 匹配 9、 99、 999等

? 匹配0个或1个在它之前的那个字符
例如: 9? 匹配 9 或 8,7,6。。。。。

/{i/}  /{i,j/} 匹配指定数目的字符 这些字符时在它之前的表达式定义的
例如:A[0-9]/{3/} 匹配 字符'A'后面正好跟着'3'个数字字符的串 A123 
A[0-9]/{4,7/} 匹配 A后4-7个数字字符的串   A1234   A1234567

【QQ号必须为5位到12位数字】^/d{5,12}$

【中国的电话号码】
0/d/d-/d/d/d/d/d/d/d/d匹配这样的字符串:以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字

也可以这样写这个表达式:0/d{2}-/d{8}。 这里/d后面的{2}({8})的意思是前面/d必须连续重复匹配2次(8次)

/b是只匹配一个位置,代表着单词的开头或结尾,也就是单词的分界处

【分枝条件】
使用时,要注意各个条件的顺序,原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。

正则表达式里的分枝条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用 | 把不同的规则分隔开

0/d{2}-/d{8}|0/d{3}-/d{7}这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)。

【验证Email地址】"^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$"。
【验证InternetURL】"^http://([/w-]+/.)+[/w-]+(/[/w-./?%&=]*)?$"。
 

【简单的IP地址匹配】
(/d{1,3}/.){3}/d{1,3}
/d{1,3}匹配1到3位的数字,
(/d{1,3}/.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(/d{1,3})。

它也将匹配256.300.888.999这种不可能存在的IP地址。如果能使用算术比较的话,或许能简单地解决这个问题,但是正则表达式中并不提供关于数学的任何功能,所以只能使用冗长的分组,选择,字符类来描述一个正确的IP地址:
((2[0-4]/d|25[0-5]|[01]?/d/d?)/.){3}(2[0-4]/d|25[0-5]|[01]?/d/d?)。
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值