罗田县升平网络工作室,一家专业从事网站建设的工作室

资讯论坛

 找回密码
 加入论坛

快捷登录

回帖中禁止出现的内容,违者将被直接永久禁止访问,删除ID处理 :1.违反法律法规 ,包括但不限于出现带有政治、色情、暴恐信息等内容;2.恶意攻击内容,包括但不限于:恶意攻击党和政府、辱骂跟帖者、攻击主题发布者、不服从论坛管理、挑衅管理者、挑战版规等;3.广告、推广内容,尤其出现带有病毒、恶意代码、广告链接等内容,包括但不限于:QQ号、文字QQ号、微信号、手机号、文字手机号、第三方网址、单位公司名称、网站名称等;4.回帖贴出该主题隐藏资源链接或其它主题隐藏资源链接的行为。
查看: 251|回复: 0

十分钟上手正则表达式 下篇

[复制链接]

728

主题

637

帖子

750

积分

社区达人

积分
750
发表于 2021-11-15 11:43:46 | 显示全部楼层 |阅读模式
目录


  • 一、正则表达式常用符号

    • 1.1 问号【?】
    • 1.2 加号【+】
    • 1.3 花括号{}
    • 1.4 管道符号【|】
    • 1.5 小括号()

  • 二、正则表达式实战示例

    • 示例1:
    • 示例2:



前面,我们就正则表达式一些常用的基本方法做了详细的介绍,本篇会讲解一些拓展性的知识,主要的就是常见的ERE模式符号以及shell脚本中常见的一些正则表达式例子。
快速学习正则表达式,不用死记硬背,示例让你通透(上篇)

一、正则表达式常用符号

本章示例着重于在gawk程序脚本中的较常见的ERE模式符号。

1.1 问号【?】

问号类似于星号,不过有点细微的不同。问号表明前面的字符可以出现 0 次或 1 次,但只限于 此。它不会匹配多次出现的字符。 示例展示:


脚本解说:
如果字符 e 并未在文本中出现,或者它只在文本中出现了 1 次,那么模式会匹配。
和星号一样,可以将问号和字符组一起使用。


脚本解说:
如果字符组中的字符出现了 0 次或 1 次,模式匹配就成立。但如果两个字符都出现了,或者其中一个字符出现了2 次,模式匹配就不成立。

1.2 加号【+】

加号是类似于星号的另一个模式符号,但跟问号也有不同。加号表明前面的字符可以出现 1次或多次,但必须至少出现1 次。如果该字符没有出现,那么模式就不会匹配。


示例解说:
如果字符 e 没有出现,模式匹配就不成立。加号同样适用于字符组,与星号和问号的使用方式相同。


脚本解读:
如果字符组中定义的任一字符出现了,文本就会匹配指定的模式。

1.3 花括号{}

ERE 中的花括号允许为可重复的正则表达式指定一个上限。这通常称为 间隔 ( interval )。 可以用两种格式来指定区间。
       
  • m:正则表达式准确出现m次。   
  • m, n:正则表达式至少出现m次,至多n次。
这个特性可以精确调整字符或字符集在模式中具体出现的次数。
重点说明:
默认情况下, gawk 程序不会识别正则表达式间隔。必须指定 gawk 程序的 --re- interval 命令行选项才能识别正则表达式间隔。
示例:


示例解读:
通过指定间隔为 1 ,限定了该字符在匹配模式的字符串中出现的次数。如果该字符出现多次, 模式匹配就不成立。
同样也可以指定上限和下限


示例解读:
字符 e 可以出现 1 次或 2 次,这样模式就能匹配;否则,模式无法匹配。
下面是字符组的示例:


示例解读:
如果字母 a 或 e 在文本模式中只出现了 1~2 次,则正则表达式模式匹配;否则,模式匹配失败。

1.4 管道符号【|】

管道符号允许在检查数据流时,用逻辑 OR 方式指定正则表达式引擎要用的两个或多个模式。如果任何一个模式匹配了数据流文本,文本就通过测试。如果没有模式匹配,则数据流文本匹配失败。
使用格式:
expr1 |expr2|...
示例:


示例解读:
这个例子会在数据流中查找正则表达式 cat 或 dog 。正则表达式和管道符号之间不能有空格, 否则它们也会被认为是正则表达式模式的一部分。
管道符号两侧的正则表达式可以采用任何正则表达式模式(包括字符组)来定义文本。看下面示例:


示例解读:
这个例子会匹配数据流文本中的 cat 、 hat 或 dog 。

1.5 小括号()

正则表达式模式也可以用圆括号进行分组。当将正则表达式模式分组时,该组会被视为一个标准字符。可以像对普通字符一样给该组使用特殊字符。
示例:


示例解读:
结尾的 urday 分组以及问号,使得模式能够匹配完整的 Saturday 或缩写 Sat 。
将分组和管道符号一起使用来创建可能的模式匹配组是很常见的做法。如下示例:


示例解读:
模式 (c|b)a(b|t) 会匹配第一组中字母的任意组合以及第二组中字母的任意组合。

二、正则表达式实战示例


示例1:

下面会有一个脚本,功能是对PATH环境变量中定义的目录里的可执行文件进行计数。
脚本内容如下:
  1. #!/bin/bash # count number of files in your PATH  mysrc=$(echo $PATH | sed 's/:/ /g') #用空格来替换冒号,分割路径count=0 for directory in $mypath do  check=$(ls $directory)  for item in $check  do  count=$[ $count + 1 ]  done  echo "$directory - $count"  count=0 done
复制代码
执行结果:



示例2:

正则表达式解析邮件地址
邮件地址的基本格式为:username@hostname
username值可用字母数字字符以及以下特殊字符:(点号、单破折线、 加号、 下划线)
在有效的邮件用户名中,这些字符可能以任意组合形式出现。邮件地址的hostname部分由一个或多个域名和一个服务器名组成。服务器名和域名也必须遵照严格的命名规则,只允许字母数字字符以及以下特殊字符:(点号、下划线)
服务器名和域名都用点分隔,先指定服务器名,紧接着指定子域名,最后是后面不带点号的
顶级域名。
顶级域名的数量在过去十分有限,正则表达式模式编写者会尝试将它们都加到验证模式中。
然而遗憾的是,随着互联网的发展,可用的顶级域名也增多了。这种方法已经不再可行。
从左侧开始构建这个正则表达式模式。
过滤用户名中表达式模式。
^([a-zA-Z0-9_\-\.\+]+)@
这个分组指定了用户名中允许的字符,加号表明必须有至少一个字符。下一个字符很明显是@。
hostname模式使用同样的方法来匹配服务器名和子域名:
([a-zA-Z0-9_\-\.]+)
顶级域名用的正则表达式模式:
\.([a-zA-Z]{2,5})$
整体组合模式:
^([a-zA-Z0-9_\-\.\+]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$
封装到脚本中:
cat isemail.sh
  1. #!/bin/bash # script to filter out bad phone numbers awk --re-interval '/^([a-zA-Z0-9_\-\.\+]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})/{print $0}'
复制代码
注意:在awk程序中使用正则表达式间隔时,必须使用--re-interval命令行选项。
示例测试脚本:


示例解读:
符合规则的邮件名会打印在屏幕,不符合的会被过滤掉,不会有内容输出。
到此这篇关于十分钟上手正则表达式 下篇的文章就介绍到这了,更多相关正则表达式 入门内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:http://www.jb51.net/article/225235.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
打赏鼓励一下!
回复

使用道具 举报

回帖中禁止出现的内容,违者将被直接永久禁止访问,删除ID处理 :1.违反法律法规 ,包括但不限于出现带有政治、色情、暴恐信息等内容;2.恶意攻击内容,包括但不限于:恶意攻击党和政府、辱骂跟帖者、攻击主题发布者、不服从论坛管理、挑衅管理者、挑战版规等;3.广告、推广内容,尤其出现带有病毒、恶意代码、广告链接等内容,包括但不限于:QQ号、文字QQ号、微信号、手机号、文字手机号、第三方网址、单位公司名称、网站名称等;4.回帖贴出该主题隐藏资源链接或其它主题隐藏资源链接的行为。

浏览排行

(38463)2019-11-5 公共云钱包资金盘骗局揭秘: 网络传销+原始股骗局合体!

(22233)2019-12-20 12月17日 邓智天法院直播庭审疑问全解答!

(20722)2019-12-1 环保币GEC资金盘骗局最新消息: 即将崩盘!

(17244)2019-11-9 巨胸肥臀大长腿,嫩模糯美子真人COS不知火舞福利污图

(15868)2018-12-24 罗田县人民法院公布【第五批失信被执行人名单】 ...

(14972)2019-11-3 曝光!PTFX已经崩盘跑路,投资者血流成河!

(13018)2019-8-7 湖北电力网上缴费,支付宝绑定户号的初始密码是什么?

(12480)2018-10-17 罗田县人民政府“12345”市民服务热线服务指南

(11170)2019-12-11 公安定性了, 趣码是非法传销! 趣码怎么退回365元?

(11081)2019-12-15 满足你对女同事的幻想 风骚秘书阿朱销魂眼神勾魂摄魄

最新发表

[升平网络工作室]2025-8-23 [2025-08-23]罗田天气预报

[升平网络工作室]2025-8-23 西藏自治区成立60周年庆祝大会隆重举行 习近平出席大会

[升平网络工作室]2025-8-23 县委委员会召开查摆问题整改整治情况汇报会

[爱查小程序]2025-8-22 [爱查]在线听音乐操作说明

[升平网络工作室]2025-8-22 [2025-08-22]罗田天气预报

[升平网络工作室]2025-8-22 习近平率中央代表团抵达拉萨出席西藏自治区成立60周年庆祝活动

[升平网络工作室]2025-8-22 县关工委联合经济开发区开展“情系学子”助学活动 助力职工子女圆梦大学

[升平网络工作室]2025-8-21 2025年罗田县卫健系统赴高校公开招聘事业单位工作人员拟聘用人员公示公告

[升平网络工作室]2025-8-21 [2025-08-21]罗田天气预报

[升平网络工作室]2025-8-21 县安防委2025年度第三次全体(扩大)会召开

QQ|Archiver|手机版|小黑屋|资讯论坛BBS.SPW8.CN ( 鄂ICP备2021011341号-3 )|网站地图


手机扫一扫继续访问
[免责声明]
本站系本网编辑转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容!
[声明]本站文章版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。

进入社区 | 发表新帖 | 百度收录 |
技术提供:罗田县升平网络工作室
站长Email:admin@spw8.cn
投诉电话(刮开查看):15374567400

GMT+8, 2025-8-23 20:18 , Processed in 0.266320 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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