忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
1234下一页
最近访问板块 发新帖
查看: 2294 | 回复: 30

[系统管理] linux shell 正则匹配 [复制链接]

论坛徽章:
0
发表于 2018-09-05 15:33 |显示全部楼层
请教一下各位高手,在shell中怎样用正则表达式匹配出满足要求的字符串,我的要求是:
1、字符串长度16位;
2、前4位必须包含数字;第二个四位必须包含大写字母;第三个四位必须包含小写字母;最后四位必须包含符号。

以上是需求,谢谢各位啦!

论坛徽章:
3
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:21
发表于 2018-09-07 08:33 |显示全部楼层
  1. echo '1234ASDFasdf&*()' | grep -Po '\d{4}[A-Z]{4}[a-z]{4}\pP{4}'
复制代码

论坛徽章:
0
发表于 2018-09-07 09:12 |显示全部楼层
回复 2# christmas1102

楼主说的是每4位 “包含”,不一定是每4位每位都是。

论坛徽章:
3
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:21
发表于 2018-09-07 13:27 |显示全部楼层
回复 3# cfwyy

你来~ 按照你的理解~ 前后位置不定,数量不定,4个字符里必须包含关键字,且匹配到的结果是4个字符,我不行,饿着呢

论坛徽章:
0
发表于 2018-09-07 17:28 |显示全部楼层
谢谢大家!可能意思没有表达的很清楚。我再说描述一下我的需求。
1、字符串长度为16个字符;
2、16个字符分为4个部分,每个部分4个字符;
3、第一部分4个字符中必须包含1个阿拉伯数字,第二部分4个字符中必须包含一个小写字母,第三部分4个字符中必须包含一个大写字母,最后一部分4个字符中必须包含一个符号。

匹配结果如:9DFS 9fBz GGEa %K5t  
第一部分只要有一个数字即可
第二部分只要有一个小写字母即可
第三部分只要有一个大写字母即可
第四部分只要有一个符号即可

论坛徽章:
0
发表于 2018-09-07 22:00 |显示全部楼层
本帖最后由 cfwyy 于 2018-09-08 08:01 编辑

回复 5# router_id
必须包含一个  是  有且只有一个 的意思吗?

论坛徽章:
0
发表于 2018-09-10 09:07 |显示全部楼层
回复 6# cfwyy

不是有且只有一个,只要有一个就可以.

论坛徽章:
0
发表于 2018-09-11 09:55 |显示全部楼层
回复 7# router_id
就是你一开始说的包含的意思,按我个人对正则不深的理解,纯用正则好像很难做到,因为要匹配的字符 位置个数都不确定就要写分枝,这样一堆的 | 写出来会死人的 ~
正则虽然强大但有时候也不是万能的。

不知道你原始的需求是什么,也可以考虑用其它的方案或者脚本实现。

论坛徽章:
0
发表于 2018-09-11 16:06 |显示全部楼层
不用正则这道题写起来很简单。

============================
问:编写脚本有什么忌讳?
答:
忌讳一行流,把所有东西都往一行塞。尤其是初学者。
程序本来就是【把问题无限拆分,拆到足够小,足够简单,并解决】的过程。
写5行代码,比写1行代码,简单5倍,甚至10倍。
建议把表达式尽量拆分开,用多行。每行用最短的,最简单的表达式。
这样方便调试,也方便插入删除代码。

我发现即使使用【狂拆行流】这样,小脚本也大都10---30行。
ps函数大都30-50行,超过50行的函数不多。
ps脚本大都100-200行,超过200行的脚本不多。

【狂拆行流】能让菜鸟迅速成为【脚本大师】,
而【一行流】就是在菜鸟进步路上的【坑爹瘪三】!爹都得被坑,何况菜鸟?

当然了,菜鸟如果进步成熟手后,可以在【狂拆行流】的基础上进行合理的组合。
使脚本每个步骤逻辑清晰。

论坛徽章:
0
发表于 2018-09-13 09:47 |显示全部楼层
您好!可以提供代码实例吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP