有关正则提取数字时间的问题(已解决)
本帖最后由 gto250 于 2010-6-8 07:01 编辑有一个字符串(气象台2010-6-6早上6时发布的“短期天气预报”:),括号内的部分,年月日中,月和日是会变化的,可能1位数字也有可能是2位,后面的早上6时也是变化的,可能是中午12时,也可能是下午15时。
像这种的正则应该怎么写? 这样你实验看看
(早上\d+时|中午\d+时|下午\d+时|晚上\d+时) $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 #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:42 编辑
根据字符串特征及要求,使用“\d+”即可$Str = '气象台2010-5-7早上6时发布的“短期天气预报”:'
$sR = StringRegExp($Str, '\d+', 3)
MsgBox(0, 0, $sR & '年' & $sR & '月' & $sR & '日' & $sR & '时') 根据字符串特征及要求,使用“\d+”即可
afan 发表于 2010-6-6 12:40 http://www.autoitx.com/images/common/back.gif
确实,以数字作为特征字符串思路比较巧妙。 谢谢各位!!! 根据字符串特征及要求,使用“\d+”即可
afan 发表于 2010-6-6 12:40 http://www.autoitx.com/images/common/back.gif
一定要用 \d+吗。直接用 \d 好像也可以吧 回复 8# chenronting
\d 可以,不过匹配的都是单个数字,组装起来太费劲了吧~ 回复 9# afan
呵呵 。明白了。我直接显示出来看。~~没有注意到原来都是一个个的~~ 回复 10# chenronting
所以 + * 之类的就有其存在的意义了,呵呵
页:
[1]