正则表达式笔记

1、非捕获组(non-capturing)

关于捕获的一些主要用法

(?:X)

(?=X)

(?<=X)

(?!X)

(?<!X)

小括号里包裹指定字表达式(子串),这就是分组。

使用小括号指定一个子表达式后,匹配这个子表达式的文本(即匹配的内容)可以在表达式或者其他过程中接着用,默认情况下,每个分组(小括号)会自动拥有一个组号,从左到右,以分组的左括号为标志,第一个出现的分组组号为1,后续递增。

例如:

“aabcd”

采用正则 (a(b))(c) match 结果入下:

分组

捕获

$1(group1)

ab

$2(group2)

b

$3(group3)

c

一、(?:)非捕获组

(\d+)(?:\.?)(?:\d+)([¥$])$

二、(?=)和(?<=) 前后查找

[0-9a-z]{2}(?=aa) var str = "12332aa438aaf";

Match List:

1

32

2

38

这个正则的意思是:匹配这么一个字符串,它要满足:是两位字符(数字,或字母),且后面紧跟着两个a。

2、 (?<=)

(?<=aa)[0-9a-z]{2};

字符串还是str = "12332aa438aaf";

它的输出:43。

三、(?!)和(?<!)

[0-9a-z]{2}(?!aa)意思是:匹配两个字符,且后面紧跟着的不是aa

(?<!aa)[0-9a-z]{2} 意思是:匹配两个字符,且前面紧跟着的不是aa

2、模式修饰符

(?i)即匹配时不区分大小写。表示匹配时不区分大小写。

(?s)即Singleline(单行模式)。表示更改.的含义,使它与每一个字符匹配(包括换行 符\n)。

(?m)即Multiline(多行模式) 。 表示更改^和$的 含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$的 精确含意是:匹配\n之前的位置以及字符串结束前的位置.) 

举例:(?m)(\/\w+\/)

(?x):表示如果加上该修饰符,表达式中的空白字符将会被忽略,除非它已经被转义。

(?A):表示如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分。比如说"/a/A"匹配"abcd"。

(?E):与"m"相反,表示如果使用这个修饰符,那么"$"将匹配绝对字符串的结尾,而不是换行符前面,默认就打开了这个模式。

3、边界符

^ 和 $ 分别代表一行(line)的开始和结束的位置;\A 和 \z 分别代表输入(input)的开始和结束位置;

Line & Input (行和输入的区别):

行是以终止子作为标志结束的字符串片段,输入是整一段字符串。例如 "Ggicci is a good guy.\nGgicci's real name is OOXX.",这段字符串就是一个输入,其中 "Ggicci is a good guy." 就是一个行。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值