gto250 发表于 2010-6-6 08:16:43

有关正则提取数字时间的问题(已解决)

本帖最后由 gto250 于 2010-6-8 07:01 编辑

有一个字符串(气象台2010-6-6早上6时发布的“短期天气预报”:),括号内的部分,年月日中,月和日是会变化的,可能1位数字也有可能是2位,后面的早上6时也是变化的,可能是中午12时,也可能是下午15时。
像这种的正则应该怎么写?

philips 发表于 2010-6-6 10:26:00

这样你实验看看
(早上\d+时|中午\d+时|下午\d+时|晚上\d+时)

水木子 发表于 2010-6-6 10:26:03

$sText = '气象台2010-6-6早上6时发布的“短期天气预报”'
$aReg = StringRegExp($sText, '\d*-\d*-\d*|(\d*)时', 3)
For $i = 0 To UBound($aReg) - 1
        MsgBox(0, '匹配结果:', $aReg[$i])
Next

3mile 发表于 2010-6-6 10:28:35

#include <array.au3>
$str='气象台2010-6-6早上6时发布的“短期天气预报”:'
$msg=StringRegExp($str,'(\d{4})\-(\d{1,2})\-(\d{1,2}).*(\d{1,2})',3)
If Not @error Then
        _ArrayDisplay($msg)
EndIf

afan 发表于 2010-6-6 12:40:15

本帖最后由 afan 于 2010-6-6 12:42 编辑

根据字符串特征及要求,使用“\d+”即可$Str = '气象台2010-5-7早上6时发布的“短期天气预报”:'
$sR = StringRegExp($Str, '\d+', 3)
MsgBox(0, 0, $sR & '年' & $sR & '月' & $sR & '日' & $sR & '时')

lpxx 发表于 2010-6-6 21:41:39

根据字符串特征及要求,使用“\d+”即可
afan 发表于 2010-6-6 12:40 http://www.autoitx.com/images/common/back.gif

确实,以数字作为特征字符串思路比较巧妙。

gto250 发表于 2010-6-8 07:01:09

谢谢各位!!!

chenronting 发表于 2010-7-1 10:18:27

根据字符串特征及要求,使用“\d+”即可
afan 发表于 2010-6-6 12:40 http://www.autoitx.com/images/common/back.gif

一定要用 \d+吗。直接用 \d 好像也可以吧

afan 发表于 2010-7-1 11:42:40

回复 8# chenronting


    \d 可以,不过匹配的都是单个数字,组装起来太费劲了吧~

chenronting 发表于 2010-7-1 12:46:25

回复 9# afan


    呵呵 。明白了。我直接显示出来看。~~没有注意到原来都是一个个的~~

afan 发表于 2010-7-1 12:49:56

回复 10# chenronting


    所以 + * 之类的就有其存在的意义了,呵呵
页: [1]
查看完整版本: 有关正则提取数字时间的问题(已解决)