免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 5873 | 回复: 30
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2018-09-05 15:33 |只看该作者 |倒序浏览
请教一下各位高手,在shell中怎样用正则表达式匹配出满足要求的字符串,我的要求是:
1、字符串长度16位;
2、前4位必须包含数字;第二个四位必须包含大写字母;第三个四位必须包含小写字母;最后四位必须包含符号。

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

论坛徽章:
4
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:2115-16赛季CBA联赛之佛山
日期:2019-02-14 09:26:31
2 [报告]
发表于 2018-09-07 08:33 |只看该作者
  1. echo '1234ASDFasdf&*()' | grep -Po '\d{4}[A-Z]{4}[a-z]{4}\pP{4}'
复制代码

论坛徽章:
8
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:0615-16赛季CBA联赛之北控
日期:2021-03-30 15:53:34
3 [报告]
发表于 2018-09-07 09:12 |只看该作者
回复 2# christmas1102

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

论坛徽章:
4
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:2115-16赛季CBA联赛之佛山
日期:2019-02-14 09:26:31
4 [报告]
发表于 2018-09-07 13:27 |只看该作者
回复 3# cfwyy

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

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

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

论坛徽章:
8
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:0615-16赛季CBA联赛之北控
日期:2021-03-30 15:53:34
6 [报告]
发表于 2018-09-07 22:00 |只看该作者
本帖最后由 cfwyy 于 2018-09-08 08:01 编辑

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

论坛徽章:
0
7 [报告]
发表于 2018-09-10 09:07 |只看该作者
回复 6# cfwyy

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

论坛徽章:
8
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:0615-16赛季CBA联赛之北控
日期:2021-03-30 15:53:34
8 [报告]
发表于 2018-09-11 09:55 |只看该作者
回复 7# router_id
就是你一开始说的包含的意思,按我个人对正则不深的理解,纯用正则好像很难做到,因为要匹配的字符 位置个数都不确定就要写分枝,这样一堆的 | 写出来会死人的 ~
正则虽然强大但有时候也不是万能的。

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

论坛徽章:
0
9 [报告]
发表于 2018-09-11 16:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2018-09-13 09:47 |只看该作者
您好!可以提供代码实例吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP