正则表达式基础知识

正则表达式基础知识

Basic篇

1、点 . : 匹配任何字符串除了换行符 /n

2、Character Sets [abc]:字符集

3、Negated Character Sets [^abc]:与上面一个的匹配方法相反,不匹配字符集内容

4、Letter Range[a-z],大小写敏感,包含第一个和最后一个

5、Number Range[0-9]

Repetition(重复)篇

*号:放在字符后面,表示字符出现零次或多次

+号:放在字符后面,表示字符出现一次或多次

?号:放在字符后面,表示字符的出现是可选的

{}号:

​ 1、放在字符后面,{n}表示出现具体几次

​ 2、{n,},加个,表示n次及以上

​ 3、{ , },在前后两个空里填上的数字表示字符出现的次数范围,{2,4}表示字符个数为2到4个

Grouping(分组)篇

()号:分组,并捕获该分组匹配到的文本

​ 分组也可以不使用圆括号,而是使用 | 元字符来表示分组,| 的两侧是两个分组,例如, exp1 | exp2 表示两个分组

引用分组: The first group is used by writing \1 to avoid rewriting. Here 1 denotes the order of grouping.

(?:)号:分组,但不捕获该分组匹配到的文本

​ 注:什么是捕获呢?使用小括号指定一个子表达式后,子表达式匹配的文本(即匹配的内容)可以在其他子表达式中重复使用

​ 举个例子,下面是两组。但是,我们用\1表示的第一个组引用实际上指向第二个组,因为第一个组是未捕获的组。

ha-ha,haa-haa

(?:ha)-ha,(haa)-\1

特定符号篇

|:管道符

:转义符

^:前缀符 用[0-9]来查找,要仅查找行首的数字,请在此表达式前加上^符号

$:美元符号 查找行尾的符合条件的内容

\w 用于查找字母,数字,和下划线

\W 用于查找除字母,数字和下划线以外的内容

\d 只用来查找数字

\D 查找数字以外的字符

\s 只用来查找空格字符

\S 查找非空格字符

lookaround篇

1、(?=pattern) 正向先行断言

the positive look-ahead expression (?=)afterour expression

代表字符串中的一个位置,紧接该位置之后的字符序列能够匹配 pattern。

例如对 “a regular expression” 这个字符串,要想匹配 regular 中的 re,但不能匹配 expression 中的 re,可以用 re(?=gular),该表达式限定了 re 右边的位置,这个位置之后是 gular,但并不消耗 gular 这些字符

2、(?!pattern) 负向先行断言

the negative look-ahead (?!) expressionafter our expression

代表字符串中的一个位置,紧接该位置之后的字符序列不能匹配 pattern。

3、(?<=pattern) 正向后行断言

the positive lookbehind expression (?<=)beforeour expression.

代表字符串中的一个位置,紧接该位置之前的字符序列能够匹配 pattern。

例如对 regex represents regular expression 这个字符串,有 4 个单词,要想匹配单词内部的 re,但不匹配单词开头的 re,可以用 (?<=\w)re,单词内部的 re,在 re 前面应该是一个单词字符。

4、(?<!pattern) 负向后行断言

the negative lookbehind (?<!)beforeour expression.

修饰符篇 Flags

Flags change the output of the expression. That’s why flags are also called modifiers.

1、Global Flag

g 修饰符可以查找字符串中所有的匹配项

2、Multiline Flag

m 修饰符可以使 ^$ 匹配一段文本中每行的开始和结束位置。

g 只匹配第一行,添加 m 之后实现多行

3、Case-insensitive Flag

i 修饰符为不区分大小写匹配

4、s 修饰符

默认情况下的圆点 . 是 匹配除换行符 \n 之外的任何字符,加上 s 之后, . 中包含换行符 \n

贪婪与非贪婪篇

1、Greedy Matching贪婪匹配

​ 匹配最长的符合条件的字符串

2、Lazy Matching非贪婪匹配

​ 遇到合适的匹配即停止

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值