ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: c001q

【菠萝一号】【文字处理教程】《正则表达式轻松入门》

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-6-23 22:06 | 显示全部楼层
本帖已被收录到知识树中,索引项:其他编程应用
见过的最通俗易懂的正则入门,楼主,一定要完善下去,不必追求表述准确,首先要易懂

TA的精华主题

TA的得分主题

发表于 2017-6-24 06:58 | 显示全部楼层
c001q 发表于 2017-6-22 12:06
虽然我说是的,Windows 必需同时使用 换行符(\r) 和 回车符(\n) 来匹配段落的结束,但是实际情况是,在不同 ...

对正则引擎来说, \r\n与\n是完全不同的, 不能相互替换. 能否匹配文本,只取决于文本中换行符是\r\n还是\n. 楼主所说情形是使用的测试软件太垃圾或默认地将原文本中换行符作了改变. 这与正则引擎无关.

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-6-24 21:21 | 显示全部楼层
本帖最后由 c001q 于 2017-6-24 21:37 编辑

匹配行首符号、行尾符号
-----------------------------
这次我们接着讲讲正则表达式中的 行首符号【^】 行尾符号【$】。正如其名称所描述的那样,这两个元字符分别可以匹配每行文字的开始位置和结果位置。例如下面的这行文字包含了 5个大字的字母G。如果我们只想 匹配行首行尾的两个大写字母G,该怎么办?




无标题.gif

正如上图所展示的,行首位于第一个 G 的 前面,因此要匹配第一个 G ,就需要把正则表达式的 行首符号【^】,也放 第一个 G 的 前面。完整的正则表达式就是 【^G】。我们看看实际的匹配效果:

360反馈意见截图1635091989119137.jpg


行尾位于第五个 G 的 ,因此需要把行尾符号【$】,也放在 G 的 后面。完整的正则表达式就是 【G$】。同样的我们也来看一下实际的匹配效果:

360反馈意见截图1629061595134112.jpg

(有人可能想问,怎么可以同时匹配到行尾和行首的 G 呢,为了满足大家的好奇心,大家可以自己试一下使用正则表达式 ^G|G$ 。其中竖线表示“或”的意思。)


大家看到这里,感觉似乎这一节内容就已经讲完了,但是真实情况是,在使用 行首元字符【^】 行尾元字符【$】 时还需要考虑一个问题那就是 正则表达式选项。正则表达式中通过设置不同的 正则表达式选项 改变正则表达式的匹配行为今天我们将只介绍 多行模式 选项 ,因这个选项只用于改变 ^$ 的匹配行为。其它的选项,我在后面会有专门的一节来介绍。


我们用实例来说明 多行模式 是如何改变 ^】【$】 的匹配效果的。激活多行模式 的情况下,^】 可以会匹配文本中每一行的行首。例如使用 ^\d】 匹配每行内容的第一个数字。


360反馈意见截图16421101284924.jpg


但如果 取消多行模式 不管文本有多少行,^】 都只能匹配 第一行的行首,而 【$】只能匹配 最后一行的行尾。例如 【\d$】 只能匹配 最后一行行尾 的数字


360反馈意见截图16480308123115134.jpg


正则表达式 【^\d】 只会配第一行行首的数字


360反馈意见截图16421104194737.jpg


学到这里,想必大家应该了解 【^】【$】两个元字符的作用了,还有它们与 多行模式 之间的关系,现在我们来做几个练习,巩固一下这节课学到的内容:


1. 如何使用正则表达式,匹配下图中红色的部分。

3243.gif
2. 如何匹配下图中红色的部分。
3243.gif
3. 如何匹配下图中的红色部分

3243.gif
4.如何匹配下图中的红色部分


3243.gif


复习题:
===============


1. 大家回想一下匹配单词边界要用什么符号?如果需要匹配“This is a book!”这句话中的 两个is 应该如何写表达式。如果不需要匹配 This 中的 is ,只需要匹配 单词is,该如何写表正则表达式。


答案:两个表达式分别是【is】和【\bis\b】


2. 如何快速匹配下面这行文字中的所有数字 ?


老王的手机号码是13342512414,他家的座机号码是 2512887


答案:使用正则表达式【\d】


TA的精华主题

TA的得分主题

发表于 2017-7-3 09:59 | 显示全部楼层
这个好,切入点简单,容易搞懂,加油啊,期待完整教程!

TA的精华主题

TA的得分主题

发表于 2017-7-3 10:16 | 显示全部楼层
liu-aguang 发表于 2017-6-24 06:58
对正则引擎来说, \r\n与\n是完全不同的, 不能相互替换. 能否匹配文本,只取决于文本中换行符是\r\n还是\n. ...

刘老师表达准确到位,建议看刘老师写的贴。粗略看了楼主写的,有些表达不够精准,还有些会误导读者!!!

TA的精华主题

TA的得分主题

发表于 2017-7-3 10:25 | 显示全部楼层
c001q 发表于 2017-6-21 18:26
首先看看 换行符 和 回车符 ,下面关于这段文字描来源于网络,清楚的描述了这两个符号来历和区别。

1.目标文本;2.回车符;3.换行符;4.回车换行符;5.多行模式的开启或者关闭。这5个单独的知识点以及这5个结合的运用。楼主是否有点“思绪凌乱?”
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-7 10:06 , Processed in 0.037486 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表