开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2274|回复: 13
收起左侧

[已解决] 求高手帮忙解释一下这段正则表达式的含义

 关闭 [复制链接]
结帖率:87% (40/46)
发表于 2015-1-26 13:18:30 | 显示全部楼层 |阅读模式   河北省承德市
5精币




正则表达式如下:(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){2,}

我知道这段正则的功能是匹配 相连的数字,但是不理解其中的含义

首先是“:”   我在网上和vip教程里没有找到比较清晰的解释
其次是 “9(?=8)|”这段正则如何理解呢?那个等号是就当赋值来用吗?


希望明白的朋友指点指教,谢谢!{:soso_e163:}

最佳答案

查看完整内容

(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){2,} 这个表达式是匹配 4位数以上 的 从最高位往后依次递减1 的 前递减位数-1 个数 比如: 源文本是987,匹配不到 源文本为9871,匹配到98 源文本为98765432,匹配到9876543 这里有正则表达式环视用法的相关教程,可以参考一下 http://blog.csdn.net/lxcnn/article/details/4304754 ...

求助知识:请将问题描述清楚,最好把你有问题的源码打包上传上来,这样更方便大家帮助你。
友情提醒:本版被采纳的主题可在 申请荣誉值 帖子申请荣誉值,获得 3点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
结帖率:67% (2/3)
发表于 2015-1-26 13:18:31 | 显示全部楼层   河北省承德市
本帖最后由 myself2 于 2015-3-7 23:03 编辑

(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){2,}

这个表达式是匹配 4位数以上 的 从最高位往后依次递减1 的 前递减位数-1 个数

比如:
源文本是987,匹配不到
源文本为9871,匹配到98
源文本为98765432,匹配到9876543
这里有正则表达式环视用法的相关教程,可以参考一下
http://blog.csdn.net/lxcnn/article/details/4304754






评分

参与人数 1荣誉 +3 收起 理由
笨潴 + 3 热心帮助他人,荣誉+3,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:100% (4/4)
发表于 2015-1-26 17:24:25 | 显示全部楼层   山东省烟台市
正则太强大了,偶是菜鸟,帮不了你,好像?:和?=是两个非捕获元字符,还有个?!也是,各种语言的正则元字符的规定也不同,你这个好像是java吧,易语言不支持的,用易语言就掌握易的元字符就好,一些小助手上已经罗列的很详细了,其它的掌握了也用不上
回复

使用道具 举报

结帖率:87% (40/46)

签到天数: 2 天

 楼主| 发表于 2015-1-26 20:07:13 | 显示全部楼层   河北省承德市
凌木 发表于 2015-1-26 17:24
正则太强大了,偶是菜鸟,帮不了你,好像?:和?=是两个非捕获元字符,还有个?!也是,各种语言的正则元字符的 ...

谢谢你的帮助,软件已经做出来了,易语言是支持的,只不过这个代码是我在网上找到的,照搬可以,却不知道具体含义
回复

使用道具 举报

结帖率:87% (40/46)

签到天数: 2 天

 楼主| 发表于 2015-1-27 13:07:33 | 显示全部楼层   河北省承德市
自己顶一下  有对这条语句明白的大牛们  辛苦帮下忙给分析分析
回复

使用道具 举报

结帖率:93% (25/27)

签到天数: 1 天

发表于 2015-1-27 22:31:47 | 显示全部楼层   辽宁省沈阳市
也不太懂 可以看看匹配出来的是文本 慢慢往回推 多调试试试
回复

使用道具 举报

结帖率:87% (40/46)

签到天数: 2 天

 楼主| 发表于 2015-1-27 23:22:24 | 显示全部楼层   河北省承德市
先自定  如何修改悬赏价格啊?可能我的悬赏太少了,没引起大家关注
回复

使用道具 举报

结帖率:87% (40/46)

签到天数: 2 天

 楼主| 发表于 2015-2-12 15:35:34 | 显示全部楼层   河北省承德市
还没研究明白,麻烦懂的朋友帮下忙
回复

使用道具 举报

结帖率:95% (21/22)

签到天数: 28 天

发表于 2015-2-12 22:33:50 | 显示全部楼层   浙江省湖州市
这个比较复杂呢,好多匹配项,用精易助手调试一下看看
回复

使用道具 举报

结帖率:67% (2/3)
发表于 2015-2-15 08:58:22 | 显示全部楼层   河北省承德市
本帖最后由 myself2 于 2015-2-15 09:06 编辑

(?:pattern)
匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用“or”字符 (|) 组合模式部件的情况很有用。例如,'industr(?:y|ies) 是比 'industry|industries' 更经济的表达式。

(?=pattern)
执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 pattern 的字符串的起始点的字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,'Windows (?=95|98|NT|2000)' 匹配“Windows 2000”中的“Windows”,但不匹配“Windows 3.1”中的“Windows”。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。

(?!pattern)
执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,'Windows (?!95|98|NT|2000)' 匹配“Windows 3.1”中的 “Windows”,但不匹配“Windows 2000”中的“Windows”。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。

看一下这段解释,然后在精易助手上调试计次你就明白了
在这里找的(微软的JS正则表达式语法)https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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