找回密码
 加入
搜索
查看: 9095|回复: 23

[系统综合] 正则表达式的多行取值,高手进

 火.. [复制链接]
发表于 2016-4-8 22:48:40 | 显示全部楼层 |阅读模式
本帖最后由 cihron 于 2016-4-14 13:23 编辑



想以“202”为关键字,取最近的日期和后边的值,结果总取到第一个日期,有什么招吗?

原码如下:
date:2013/12/31
001     ABCD     100
002     AAAA     200
003     ABAB     300
date:2015/05/28
101     EEEE     500
102     QQQQ     600
date:2016/03/18
201     LLLL     800
202     XXXX     900

=========================================================

9楼 “zldfsz” 大和尚的方法确实解决了这个问题,贴出来代大家学习:

(?s).*(\d{4}/\d{2}/\d{2}).*?202\s+\w+\s+(\d+)     正确
(?s)(\d{4}/\d{2}/\d{2}).*?202\s+\w+\s+(\d+)      错误

=========================================================

这几天我都快放弃了,以为正则无解了,原来却只是差这一点 “.*"

看来还是人外有人,山外有山哈,小菜们勤加学习吧!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-4-9 00:28:50 | 显示全部楼层
加个 (?U) 试试看,表示非贪婪模式,默认为贪婪模式。
发表于 2016-4-9 09:08:26 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2016-4-9 09:59:40 | 显示全部楼层
回复 3# haijie1223


    这种方法在这个例子中确实没问题,但真实数据中日期间的数据行数和数据的位置是不一定的,只能根据关键词来取值。
 楼主| 发表于 2016-4-9 10:06:06 | 显示全部楼层
偿试了下用环视解决:
   
        (?<=(\d{4}\d{2}\d{2})).*?202\s+\w+\s+(\d+)

结果也是一样的,.*?组合太贪婪了,虽然加了限定符“?”但貌似只能限制期后面的匹配,对前面的没有约束。
发表于 2016-4-9 10:07:05 | 显示全部楼层
回复 4# cihron


    那就把实际问题的数据全部发上来啊
 楼主| 发表于 2016-4-9 12:00:39 | 显示全部楼层
回复 6# haijie1223


    原文太大,没招。
发表于 2016-4-9 13:36:37 | 显示全部楼层
回复  haijie1223


    原文太大,没招。
cihron 发表于 2016-4-9 12:00



    奇怪,楼上的超版在求你呢…
发表于 2016-4-9 17:04:19 | 显示全部楼层
本帖最后由 zldfsz 于 2016-4-9 17:05 编辑

;### 友情提示:本脚本由 Au3.REHelper 于 2016/04/09 17:00 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $Str = _ 
'date:2015/12/31' & @CRLF & _
'001   ABCD    100' & @CRLF & _
'002   AAAA    200' & @CRLF & _
'003   ABAB    300' & @CRLF & _
'date:2016/03/18' & @CRLF & _
'201    LLLL    800' & @CRLF & _
'202    XXXX    900'
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExp($str, '(?s).*(\d{4}/\d{2}/\d{2}).*?202\s+\w+\s+(\d+)', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($Test), '其中[0]元素为: ' & $Test[0])
_ArrayDisplay($Test, UBound($Test))


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-4-9 18:12:03 | 显示全部楼层
回复 8# afan


    afan,~又在卖弄风骚~
发表于 2016-4-9 19:41:32 | 显示全部楼层
回复  afan


    afan,~又在卖弄风骚~
haijie1223 发表于 2016-4-9 18:12



    与字符串相关的提问,居然没有提供源字符串,要帮忙的人照着贴图码字?
当然,有卖弄风骚的人愿意
发表于 2016-4-9 19:51:18 | 显示全部楼层
回复 11# afan


    afan一定在说9楼,法海属于纯闷骚型的美男子~
发表于 2016-4-9 20:17:14 | 显示全部楼层
回复  afan


    afan一定在说9楼,法海属于纯闷骚型的美男子~
haijie1223 发表于 2016-4-9 19:51



    你也是…  话说大家都在用旧版的Au3.REHelper
发表于 2016-4-9 21:21:38 | 显示全部楼层
回复 13# afan


    能用就好&#128516;
发表于 2016-4-9 21:39:33 | 显示全部楼层
正则还是把源文件发出来比较好  大大们会考虑的很周到
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 10:50 , Processed in 0.082817 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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