正则表达式中简单的模式匹配----《学习正则表达式》摘要

匹配字符串字面值

就是上一章说的写啥匹配啥

类似于平常word文档里或者网页里搜索关键词

(可以在本网页试试按 ctrl + f, 可以搜索页面上的关键词)

匹配数字

例如

\d 

匹配0-9的数字字符

注意取消勾选 g(global), 则只匹配第一个, 勾选g则查找整个字符串, 所有符合的都将被匹配

或者使用

[0-9]

与 \d 效果一样

0-9表示范围, 也可以直接全部列出来

[0123456789]

效果也一样

当然也可以只匹配你想要的

[09]
只匹配 0 或 9

[17]
只匹配 1 或 7
注意不是匹配数字 17 !!!

相比之下 \d 好于 [0-9] 好于 [0123456789], 因为\d最短

当然[]的灵活性更好, 可以匹配你想要的, 而\d被固定为了0-9

匹配非数字字符

通常可以将简写式取反

其结果就是排除

如匹配非数字字符, 使用如下大写字母D

\D

可以编几句话, 自己在在线测试工具中试试使用\D的搜索效果

这个可以使用取反代替:

[^0-9]

或者

[^0123456789]

或者

[^\d]

匹配单词和非单词字符

在线测试工具中试试:

\w

(w小写)

这将匹配所有的单词字符(global模式下), 他只匹配字符,数字与下划线而不包括标点,空格

记住\w匹配单词, 且只匹配字母,数字和下划线

试试用 [ ] 如何代替\w?

[_a-zA-Z0-9]

下面猜猜\W是干啥的(W大写)

毫无疑问就是\w的^模式

也就是匹配空格,标点, 非数字字母或下划线

\W

相当于

[^_a-zA-Z0-9] 或者 [^\w] (w小写)

hhh, 突然发下^_a可以当作一个表情用 0.0 qwq T_T

其他字符简写:
\a 报警符
[\b] 退格符号
\c x 控制符合
\d 数字字符
\D 非数字字符
\o xxx 字符的八进制值
\w 单词字符(数字,字母,下划线)
\W 非单词字符
\0 空字符
\x xx 字符的十六进制值
\u xxx 字符的unicode值

注意, 不是所有的正则表达式处理器都能识别这些简写式

匹配空白符

\s

用于匹配空白符

注意空白符不只是空格, 还包括
制表符 \t
换行符 \n
回车符 \r

也就相当于

[ \t\n\r]

注意\t之前有个空格

自己在RegExpal测试一下, 空格符被选中时会被标注颜色, 而其他三个不会

在菜鸟正则表达式测试工具中测试时则都会标注颜色

同理 \S 表示非空白符

\S

相当于

[^ \t\n\r] 或者 [^\s]

匹配任意字符

也就是之前讲到的 点号 .

可以匹配除了行结束符之外的所有字符, 个别情况除外

在线测试工具中取消勾选global选项,
使用.进行匹配发现第一个字符将被选中
.号选中第一个字符

匹配前5个字符可以使用: … 五个点号
当然也可以 .{5}

在菜鸟工具中使用\s发现末尾的换行符其实也被标出了颜色, 但是使用 . (global) 你会发现, 末尾的换行符并没有被标注出来, 说明其实.并不是万能的, 他并不匹配换行符或回车符

在菜鸟工具中将修饰符全部取消勾选, 使用 .*

发现第一行全部被选则, 标出的颜色框最右端是圆弧状而非矩形一样方方直直的, 表明行结束符并没有被匹配到
第一行行结束符未被匹配

而将修饰符改为s(取消勾选, 自己填入s), 发现全部被选中, 且第一行末尾标注的颜色区块变成了矩形而非圆弧形, 加入s修饰符则表示dotall为true, 启用, 默认为false不启用
启用dotall, 第一行行结束符被选中

而 /.*/s 表示开启dotall匹配0个或多个任意字符(包括行结束符在内), 那为什么没用匹配0个而是采取匹配多个以至于全部都被匹配了呢?

这涉及到量词的贪心特性, 也就是量词会匹配所有能匹配的字符, 所以这里就采取匹配最多的方式, 也就变成了全部匹配

第七章将详细介绍量词及其贪心特性

给文本加标签

使用正则匹配捕获想要替换的文本

再在替换中使用引用捕获组的内容进行替换

在菜鸟工具中上面是/pattern/flags, 下面还有个修改栏

在 pattern 中填入 (.*), flags设置为空,即什么模式都不给, 这将选择第一行
匹配第一行

然后在替换栏中写入

<h1>$1<\h1>

点击替换就将第一行加入了h1标签, 相当于将第一行作为了标题
添加标签

本节后续还有两节内容, 分别是使用sed(unix流编辑器)给文本加标签和使用perl给文本加标签, 这里就不介绍了, 有兴趣的可以看原书

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BetterChinglish

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值