正则表达式

本文介绍了正则表达式中常见的元字符,如d、D、w、W等,区分贪婪模式与非贪婪模式,以及如何通过分组获取特定信息。同时推荐了用于练习正则表达式的两个网站。
摘要由CSDN通过智能技术生成

此文章仅为自己学习记录之用,如有不正确的地方欢迎指正,非常感谢

目录

1.常见元字符

1)匹配单个字符的元字符

2)确定数量的元字符

3)其它元字符

2.使用技巧

1)贪婪模式和非贪婪模式

2)分组

3.推荐练习网站


1.常见元字符

1)匹配单个字符的元字符
.除了换行符以外的任何单个字符
\d匹配0-9间任意一个数字字符,等价于[0-9]
\D匹配非数字字符,等价于[^0-9]
\f匹配一个换页符
\n匹配一个换行符
\r匹配一个回车符
\t匹配一个制表符
\v匹配一个垂直制表符
\s匹配任何空白字符,包括空格、制表符、换页符等等,等价于[\f\n\r\t\v]
\S匹配任何非空白字符,等价于[^\f\n\r\t\v]
\w匹配字母数字下划线。等价于[A-Za-z0-9_]
\W

匹配非字母数字下划线。等价于[^A-Za-z0-9_]

2)确定数量的元字符
*匹配前面的子表达式人任意次,包括0次
+匹配前面的子表达式人一次或多次,不包括0次
?匹配前面的子表达式0次或1次
{m,n}

匹配前面的子表达式指定的次数,至少m次,至多n次,括号内也可以只填写一个数字如{3}表示固定匹配三次

3)其它元字符
[]

匹配括号内的几个字符之一,如[abc],里面可以用 - 来指定范围,就不需要列举出所有的字符,如[abc]就等价于[a-c]

注:一些元字符在方括号内就没有了特殊含义,变成了普通字符,如 . ,[.]就仅代表匹配一个 . 字符。方括号中的^代表非

\转义字符,当要匹配的字符刚好是元字符时,可以在前面加上\。如要匹配+时,就可以使用\+
|匹配两个子表达式中的一个,例如x|y就是匹配x或y。'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
\b匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
\B匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
^匹配文本的起始位置
$匹配文本的结束位置

2.使用技巧

1)贪婪模式和非贪婪模式

如果要在下面的信息中找出所有的王姓女士

王三女士,李四喜女士,赵翔先生,吴四女士,王香女士

我们可能会想使用 王.*女士 来进行匹配

但是验证的匹配结果却是把所有的都匹配上了,因为刚开始的王和最后的女士也满足这个正则表达式的语法

这是因为正则表达式中, ‘*’, ‘+’, ‘?’ 都是贪婪地,使用他们时,会尽可能多的匹配内容

要解决这个问题,我们可以使用非贪婪模式,在*后加上?即可

2)分组

还是这个例子

王三女士,李四喜女士,赵翔先生,吴四女士,王香女士

如果我们要得到的是王姓女士的名字呢?

此时我们可以使用()来进行分组

使用 (王.*?)女士就可以得到我们想要的内容,这个可以搭配python来使用但本文章暂时不做赘述

3.推荐练习网站

这是两个可以验证正则表达式的网站

regex101: build, test, and debug regex

 正则表达式在线测试 | 菜鸟工具 (jyshare.com)

这是一个可以练习正则表达式题目的网站

编程胶囊-打造学习编程的最好系统 (codejiaonang.com)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值