[已解决]请问怎么提取字符串的的日期与时间,谢谢
本帖最后由 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 秒。
#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), '其中元素为: ' & $aSRE)
_ArrayDisplay($aSRE, UBound($aSRE)) 总之我要用匹配两次以上,坐等大神出手 回复 2# afan
谢谢a版
有一个问题是: 时间位置是上午/下午可不可以在时间位置带出来,谢谢。 #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)) 回复 5# afan
测试成功,太感谢了 回复 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 秒。
已處理\s\d[\d\.]*?\d\s個位元組,用了\d+\s分鐘(?:又\d+\s秒。)* 回复 7# light_he
可以分3个表达式(\d+年\d+月\d+日)\V+?(\d+:\d+:\d+)(\d+/\d+/\d+).+?(\d+:\d+:\d+)(\d+(?:[\d,]+\d)?).+?了(.+?)。 回复 9# afan
谢谢a版,测试都可以。 好像不能移动到已解决版块,版主帮忙下,谢谢。
页:
[1]