正则表达式 可有可无_正则表达式基础

本文详细介绍了正则表达式的基本概念,包括限定符如?、*、+的使用,"或"运算符,字符类,元字符,以及贪婪与懒惰匹配。通过实例演示了如何匹配RGB颜色值、IPv4地址和电话号码,提供了全面的正则表达式总结表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

限定符

  • ?  :  ? 前面字符可出现 0 次 或者 1 次。

    在上述例子中:?  它前面这个字符 d 需要出现 0 次或者 1 次。即 d 这个字符可有可无。上面例子中,used? 即可匹配  user  也可匹配 used

     used?
  • 6f6b9b19c7e35c45c628105f6a6d30be.png

  • *  :* 号前面字符可以出现 0 次 或者多次。

    上述例子中:*  代表 b 可以出现 0 次 或者出现 多次。

     ab*c
  • 83d3d67fc31dd9bc81c52c8efab9fa35.png

  • +  :+ 号前面字符可出现 1 次 以上的字符。

  •  ab+c

    6f61b31a8d762dfde1cba36431cea4d0.png

  • 指定字符出现的次数

    指定字符 b 出现 6次

d85a4ee3a45a5081bb31b2c4410e0913.png

  •  ab{6}c

    指定字符 b  出现  2-8 次之间

a41f4e108f4de4c1ed9e11217ea8f970.png

  •  ab{2,8}c

    如果需要指定 字符 b 出现 2 次以上,可以省略 6

2e87df287ec4dfe92585ac91d729ee96.png

  •  ab{2,}c

    如果需要匹配多个字符,则可以将需要匹配的字符用小括号括起来再添加限定符。

    例1:在下面例子中需要匹配 以 a 开头,a 后面是 ab 并且出现 1 次以上的。

87dd2c28e2bc2d8ec9fef6883e1cd780.png

  •  a(ab){1,}

    例2:在下面字符中匹配 ab 字符,出现一次,或多次的

2ad1aaf37e085d36862c924288b597ee.png

 (ab)+

“或” 运算符

|  : 或 运算符

在下面例子中 匹配,要么是 a cat   或者是  a  dog

beb1a4d7d85245144d3db0547d1b989b.png

 a (cat|dog)

字符类

  • 匹配 由  abc 三个字符构成的单词

d6b8a40f21241b4d986b4d9a48b34443.png

  •  [abc]+表示单词中包含 abc三个字符的都可以匹配到。[] 里的内容代表要求匹配的字符只能取自它们。

    可以在 [ ] 里指定范围[a-z]: 代表所有的小写英文字母

  • [a-zA-Z]: 代表所有的英文字母

  • [a-zA-Z0-9]     : 代表所有的英文字母和数字如果在 [ ] 的起前面加一个  

  • ^ (脱字符)则代表要求匹配除了尖号后面列出的【以外】的字符

     例如:[^0-9] :代表所有的非数字的字符(包括换行符)

元字符

正则表达式中的大多数元字符都是以反斜杠  \ 开头的

\d  :数字字符

\D  :非数字字符

\w :单词字符(英文,数字及下划线)

\W :非单词字符

\s  :空白符(包含 Tab 和 换行符)

\S  :非空白符

.     :任意字符,但是不包含换行符

^    :只匹配行首。例:^a 只会匹配行首的a

$    :只匹配行尾。例:a$ 只会匹配行尾的a

贪婪与懒惰匹配

例子:匹配下面内容中的所有HTML标签   和   标签

 <span><p>这是一个html标签p>span><.+?>

0504463284ee48959b9ba85ff9883e05.png

实例

RGB  颜色值匹配

匹配下面所有的十六进制的颜色值

8d9d9eab9aea45663c565ec3047c0f3a.png

 #[a-zA-Z0-9]{6}\b首先匹配 # ,然后匹配所有字母和数字并且数字和字母组合只能是6个字符,\b 代表单词字符的边界
IPv4 网络地址

f5cd42286f3c34f194f39c54ee161800.png

 \b((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)\b将ip分为4段,每段可以为,1位,2位或者3位组成如果第一段是以25开头,则第三位必须是0-5之间的数 即 25[0-5],如果第一段是以2开头,第二位是0-4之间的数,那么第三位可以是 0-9之间的数,即 2[0-4]\d  \d表示所有的数字字符如果第一段是0或者1开头,那么后两位可以取 00-99之间的任意数字,[01]\d\d,由于ip地址的每一部分都可以是1位数字,2位数字组成或者3位数字组成,所以在第1位和第3位后面字符都加上可以一个?就可以表示这种情况了。[01]?\d\d?数字部分匹配完了之后就是后面的句点,\.组合起来就是 (25[0-5]|2[0-4]\d|[01]?\d\d?)\.将此段匹配3次,就是ip地址的前3段了。((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}第四段,只要将前面的再匹配一次就可以了,不需要匹配句点。(25[0-5]|2[0-4]\d|[01]?\d\d?)最后在首尾加上 \b 来匹配字符边界。最终结果:\b((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)\b
电话号码
 ^(13[0-9]|14[5-8]|15[0-9]|16[6-7]|17[5-8]|18[0-9]|19[8])\d{8}$

总结表

限定符

a* a出现0次或多次

a+ a出现1次或多次

a? a出现0次或1次

a{6} a出现6次

a{2,6}     a出现2-6次

a{2,} a出现两次以上

或运算符

(a|b) 匹配a或者b

(ab)|(cd) 匹配ab或者cd

字符类

[abc] 匹配a或者b或者c

[a-c] 匹配a或者b或者c

[a-fA-F0-9] 匹配小写和大写英文字符以及数字

[^0-9] 匹配非数字字符

元字符

\d 匹配数字字符

\D 匹配非数字字符

\w 匹配单词字符(英文、数字、下划线

\W 匹配非单词字符

\s 匹配空白符(包含换行符、Tab)

\S 匹配非空白字符

. 匹配任意字符(换行符除外)

\bword\b \b 标注字符的边界(全字匹配)

^ 匹配行首

$ 匹配行尾

贪婪/懒惰匹配

<.> 默认贪婪匹配“任意字符”

<.> 懒惰匹配“任意字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值