kingfirekkk 发表于 2010-9-21 10:19:58

[已解决]正则式提问:正则表达式测试工具V4.0测试结果与实际结果不符

本帖最后由 kingfirekkk 于 2010-9-21 13:30 编辑

菜菜我使用"正则表达式测试工具V4.0 By:水木子"测试以下字符串:
\\host11 的当前时间是 2010/9/22 上午 09:45
\\host11 的当前时间是 2010/10/1 上午 09:45
得出匹配结果为:(我要的结果)
2010/9/22 上午 09:45
2010/10/1 上午 09:45

但使用以下代码输出的结果却把我要找出来的东西弄不见了:
Local $str = ''
Local $too = Run(@ComSpec & ' /c net time \\host11, '', 0, 2)
While 1
      Sleep(1)
      $str &= StdoutRead($too)
      If @error Then ExitLoop
WEnd
$t1=StringRegExpReplace($str, '\d{4}\/.+.','$1')
msgbox(0,"Date and Time",$t1)
实际输出为:
\\host11 的当前时间是

请教帮忙解答:
1. 正则表达式是否有误?
2. StringRegExpReplace($str, '\d{4}\/.+.','$1')语句中,$1的含义
3. 如何使用正则式得出我要的结果:
2010/9/22 上午 09:45
2010/10/1 上午 09:45

shenrenba 发表于 2010-9-21 10:45:42

1:3:   $str 的值是什么?不列出来怎么解答?

2:$1 相当于\1 正则里面的 定义的组 取第一组

kingfirekkk 发表于 2010-9-21 10:48:31

抱歉,刚忘记了这一部分了...

水木子 发表于 2010-9-21 11:06:09

本帖最后由 水木子 于 2010-9-21 11:07 编辑

非常感谢你的使用与支持!
这是你要的效果吗?

liufenglg 发表于 2010-9-21 11:11:19

Dim $u
$s="\\host11 的当前时间是 2010/9/22 上午 09:45"
$t1=StringRegExp($s, "\d{4}.+",3)
For $i=0 To $t1-1
msgbox(0,"Date and Time",$t1[$i])
Next

lsqyx528 发表于 2010-9-21 11:11:23

#include<array.au3>
Local $str = _
    "\\host11 的当前时间是 2010/9/22 上午 09:45" & @CRLF & _
    "\\host11 的当前时间是 2010/10/1 上午 09:45"

Local $result = StringRegExp($str, 'host11 的当前时间是\s+(.+)\b', 3)
_ArrayDisplay($result, UBound($result))

liufenglg 发表于 2010-9-21 11:14:27

非常感谢你的使用与支持!
这是你要的效果吗?
水木子 发表于 2010-9-21 11:06 http://www.autoitx.com/images/common/back.gif


    +变成*可以 ?怎么不行

水木子 发表于 2010-9-21 11:32:46

本帖最后由 水木子 于 2010-9-21 11:35 编辑

回复 7# liufenglg
“+”重复前面的字符, 1 或更多次数. 等价于 {1,}

“?”可能会或可能不会出现的前一字符. 等价于 {0, 1}

kingfirekkk 发表于 2010-9-21 11:51:21

回复 4# 水木子


没错,是我要的效果..

shenrenba 发表于 2010-9-21 11:52:40

偷巧的方法
\h2.+

kingfirekkk 发表于 2010-9-21 17:17:47

谢谢各位的通力支持,小弟受益良多....想不到还有幸见到"水木子"大侠!让我倍受鼓舞啊.

谢谢.

水木子 发表于 2010-9-21 17:44:09

呵呵!大侠不敢当!
貌似我天天都在吧!生病那几天我基本上都在,嘿嘿!

kingfirekkk 发表于 2010-9-24 23:51:45

版主的精神值得大伙儿学习...偶要是有这精神,说不定也是哪路大神了:)
页: [1]
查看完整版本: [已解决]正则式提问:正则表达式测试工具V4.0测试结果与实际结果不符