正则表达式

正则表达式

字符功能
.匹配任意一个字符(除了\n),“\.” 匹配"."本身
[]匹配[]中列举的字符串
\d匹配数字0-9
\D匹配非数字
\s匹配空白,即空格、tab键
\S匹配非空白
\w匹配单词字符,即a-z,A-Z,0-9,_
\W匹配非单词字符
字符功能
*匹配前一个规则的字符出现0或无数次
+匹配前一个规则的字符出现1或无数次
匹配前一个规则的字符出现0或1次
{m}匹配前一个规则的字符出现m次
{m,}匹配前一个规则的字符出现至少m次
{m,n}匹配前一个规则的字符出现m到n次
字符功能
^匹配字符串开头
$匹配字符串结尾
\b匹配一个单词边界
\B匹配非单词边界
|或,匹配左右任意一个表达式
( )将括号中的字符串作为一个分组

贪婪or非贪婪

贪婪匹配:(.*)非贪婪匹配:(.*?)
获取最长的满足条件的字符串获取最短的能满足条件的字符串

eg:

我的微博密码是:1234567,QQ密码是:33445566, 银行卡密码是:888888,Github密码是:999abc999,帮我记住它们

贪婪匹配:匹配规则:“密码是:(.*)
结果:

“1234567,QQ密码是:33445566, 银行卡密码是:888888,Github密码是:999abc999” (长度为1)

非贪婪匹配:匹配规则:“密码是:(.*?)
结果:

“1234567”, “33445566”, “888888”, “999abc999” ( 长度为4)

前瞻or后顾

前瞻 = 先行断言 紧跟在模式字符串后面的位置满足指定条件
后顾 = 后发断言 紧跟在模式字符串前面的位置满足指定条件

正向or反向

正向 模式字符串前或后面它所给条件
反向 模式字符串前或后面不是它所给条件
(反向,即反着来,不按要求来)

组合

(?=) 正向前瞻 = 正向零宽先行断言

(?!) 反向前瞻 = 负向前瞻 = 负向零宽先行断言

(?<=) 正向后顾 = 正向零宽后发断言

(?<!) 反向后顾 = 负向后顾 = 负向零宽后发断言

示例

反向前瞻断言示例: 假设我们要匹配包含"apple"的单词,但只有在"apple"后面不跟着"pie"的情况下才匹配。我们可以使用反向前瞻断言来实现这一点。

正则表达式:apple(?!pie)
字符串:I like apple pie and apple juice
匹配结果:apple(第二个"apple"匹配成功,因为它后面不跟着"pie")

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值