免费注册 查看新帖 |

Chinaunix

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

正则求助 [复制链接]

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
1 [报告]
发表于 2016-10-30 01:51 |显示全部楼层
问题论述不清:根据筛选结果看,字母数字混合,实际上是以数字开始,小写字母随后的组合。

时间的正则是: (?:[1-9][0-9]|[1-9])(?::[0-9]{2}){2}, 09:1:2 不是符合的匹配

另外,取反,一般的含义是操作二进制数的一个计算,对待字符串的取反,不知道是什么东西。

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
2 [报告]
发表于 2016-10-30 12:09 |显示全部楼层
正则表达式想要降低复杂度,有几个办法:
1. 启用 xms 模式,增加空格和相应注释


  1. /
  2.   7?0              # 70 or 0
  3.   | (?:\d\d?)?  #  00 or 0 or nothing
  4.   [\x{4E00}-\x{9FA5}]++  // Hanzi
  5. /
复制代码


2,使用正则表达式内插

  1. my $num = qr/\d+/;
  2. my $alpha = qr/[a-zA-Z]+/;
  3. my $num_or_alpha = qr/$num|$alpha/;
复制代码


3. 复用正则表达式:
CPAN 上有许多关于正则表达式定义的模块,例如:Regexp::Common, 里面定义了许多常用的正则表达式描述,这些表达式都经过了多次的测试,十分的稳定。

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
3 [报告]
发表于 2016-10-30 14:14 |显示全部楼层
想建立自己的正则表达式集合,就建立一个模块,定期更新,CPAN 上有许多类似的模块。

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
4 [报告]
发表于 2016-10-30 16:37 |显示全部楼层
你是不是想匹配取反?

  1. $str !~ /pattern/
复制代码

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
5 [报告]
发表于 2016-10-31 16:27 |显示全部楼层
你说的是不是必须有字母和数字的混合?
  1. /(?:[a-z]+\d+)+|(?:\d+[a-z]+)+/
复制代码

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
6 [报告]
发表于 2016-10-31 16:33 |显示全部楼层
大部分情况下,用实例描述问题更具有说服力。

以下字符串不符合预期:
  1. 123
  2. abc
复制代码

以下字符串符合预期:
  1. 123abc
  2. abc123
复制代码

评分

参与人数 1信誉积分 +10 收起 理由
sunzhiguolu + 10 很给力!

查看全部评分

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
7 [报告]
发表于 2016-10-31 17:20 |显示全部楼层
我估计你把问题搞复杂了,你对正则已经理解很深入了,已经具备自己写一个正则表达式解析器的能力。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP