找回密码
 加入
搜索
查看: 2943|回复: 10

[AU3基础] [已解决]请问怎么提取字符串的的日期与时间,谢谢

  [复制链接]
发表于 2015-12-2 15:55:18 | 显示全部楼层 |阅读模式
本帖最后由 light_he 于 2015-12-3 15:00 编辑

大家好,请问怎么从下列的字符串提取日期与时间
第三行怎么提取中间的大小数值与后面的耗时
谢谢
已開始工作: 2015年12月1日 (在 下午 10:55:11)
已於 2015/12/1 日 上午 11:44:13 時完成備份。
已處理 7,095,324,441 個位元組,用了15 分鐘又14 秒。
发表于 2015-12-2 16:19:20 | 显示全部楼层
#include <Array.au3>
Local $sSource = _
                '已開始工作: 2015年12月1日 (在 下午 10:55:11)' & @CRLF & _
                '已於 2015/12/1 日 上午 11:44:13 時完成備份。' & @CRLF & _
                '已處理 7,095,324,441 個位元組,用了15 分鐘又14 秒。'
;~MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '(?s)(\d+年\d+月\d+日)\V+?(\d+:\d+:\d+).+?\v+.+?(\d+/\d+/\d+).+?(\d+:\d+:\d+).+?(\d+[\d,]+\d).+?了(.+?)。', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中[0]元素为: ' & $aSRE[0])
_ArrayDisplay($aSRE, UBound($aSRE))
发表于 2015-12-2 16:30:43 | 显示全部楼层
总之我要用匹配两次以上,坐等大神出手
 楼主| 发表于 2015-12-2 17:28:21 | 显示全部楼层
回复 2# afan

谢谢a版
有一个问题是: 时间位置是  上午/下午  可不可以在时间位置带出来,谢谢。
发表于 2015-12-2 17:58:43 | 显示全部楼层
#include <Array.au3>
Local $sSource = _
                '已開始工作: 2015年12月1日 (在 下午 10:55:11)' & @CRLF & _
                '已於 2015/12/1 日 上午 11:44:13 時完成備份。' & @CRLF & _
                '已處理 7,095,324,441 個位元組,用了15 分鐘又14 秒。'
Local $aSRE = StringRegExp($sSource, '(?s)(\d+年\d+月\d+日)\V+?在\h+(.+?\d+:\d+:\d+).+?\v+.+?(\d+/\d+/\d+).+?日\h+(.+?\d+:\d+:\d+).+?(\d+[\d,]+\d).+?了(.+?)。', 3)
_ArrayDisplay($aSRE, UBound($aSRE))
 楼主| 发表于 2015-12-3 08:10:20 | 显示全部楼层
回复 5# afan


    测试成功,太感谢了
 楼主| 发表于 2015-12-3 09:58:24 | 显示全部楼层
回复 5# afan

不好意思,还要再麻烦一下,测试发现如下问题,如果第三个字串 已處理 0 個位元組  ,就抓不到数据了,至少得改成3位数才可以抓到
请再帮忙看看, 另外这个正则能不能改成3句正则,也就是每一行一个正则,我按照如下正则修改半天都不成功,搞崩溃了,谢谢啦.
#include <Array.au3>
Local $sSource = _
                '已開始工作: 2015年12月1日 (在 下午 10:55:11)' & @CRLF & _
                '已於 2015/12/1 日 上午 11:44:13 時完成備份。' & @CRLF & _
                '已處理 0 個位元組,用了15 分鐘又14 秒。'
Local $aSRE = StringRegExp($sSource, '(?s)(\d+年\d+月\d+日)\V+?在\h+(.+?\d+:\d+:\d+).+?\v+.+?(\d+/\d+/\d+).+?日\h+(.+?\d+:\d+:\d+).+?(\d+[\d,]+\d).+?了(.+?)。', 3)
_ArrayDisplay($aSRE, UBound($aSRE))
已開始工作: 2015年12月1日 (在 下午 10:55:11)
已於 2015/12/1 日 上午 11:44:13 時完成備份。
已處理 7,095,324,441 個位元組,用了15 分鐘又14 秒。
发表于 2015-12-3 11:09:15 | 显示全部楼层
已處理\s\d[\d\.]*?\d\s個位元組,用了\d+\s分鐘(?:又\d+\s秒。)*
发表于 2015-12-3 11:12:11 | 显示全部楼层
回复 7# light_he


    可以分3个表达式
(\d+年\d+月\d+日)\V+?(\d+:\d+:\d+)
(\d+/\d+/\d+).+?(\d+:\d+:\d+)
(\d+(?:[\d,]+\d)?).+?了(.+?)。
 楼主| 发表于 2015-12-3 14:56:40 | 显示全部楼层
回复 9# afan


    谢谢a版,测试都可以。
 楼主| 发表于 2015-12-3 15:02:17 | 显示全部楼层
好像不能移动到已解决版块,版主帮忙下,谢谢。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-28 22:17 , Processed in 0.119436 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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