newuser 发表于 2010-5-6 11:03:11

StriingRegExp()的问题?[已解决]

本帖最后由 newuser 于 2010-5-6 12:48 编辑

我的问题是2个damage前的数字我都想显示该怎么办?
$asResult = StringRegExp("You deflect 36 of Gnarly 25Monster's 279 damage 379 damage", '({1,3}) (?:damage) ', 1)

If @error == 0 Then
    MsgBox(0, "SRE 示例 6 结果", $asResult & "," & $asResult)
EndIf

水木子 发表于 2010-5-6 11:05:16

不明白LZ的意思,把原字符串和需要出的结果放上来看看呢?

afan 发表于 2010-5-6 11:34:58

本帖最后由 afan 于 2010-5-6 11:37 编辑

$Str = "You deflect 36 of Gnarly 25Monster's 279 damage 379 damage"
$sR = StringRegExp($Str, '(\d+)\h+damage', 3)
If Not @Error Then MsgBox(0, 'SRE 示例 6 结果', $sR & ',' & $sR)

newuser 发表于 2010-5-6 12:01:46

回复 3# afan
谢谢,解决了?不过它的匹配符号真多真难理解,只能是用到了在学点.
不过还是想请教:
\d相当于,+ 相当于 重复前面的字符,那么\d+该怎么理解呢?难道是2个?
\h 匹配一个换行符,那么\h+damage该如何理解呢?$Str = "You deflect 36 of Gnarly 25Monster's 279 damage 379 damage"
$sR = StringRegExp($Str, '({1,3})(?: damage)', 3)
;$sR = StringRegExp($Str, '(\d+)\h+damage', 3)
If Not @Error Then MsgBox(0, 'SRE 示例 6 结果', $sR & ',' & $sR)

afan 发表于 2010-5-6 12:12:11

+ 相当于 重复前面的字符----其实应该为有符合前面的表达式的字符串1个以上。\d+ 也就是说至少有一个数字。
\h+damage----有一个以上空格,紧接着damage字符串

newuser 发表于 2010-5-6 12:47:39

回复 5# afan
老实说,还不是很明白"其实应该为有符合前面的表达式的字符串1个以上",要是有个例子就好了.
理解能力差,呵呵!

水木子 发表于 2010-5-6 12:51:40

回复afan
老实说,还不是很明白"其实应该为有符合前面的表达式的字符串1个以上",要是有个例子就好了.
...
newuser 发表于 2010-5-6 12:47 http://www.autoitx.com/images/common/back.gif
不急!不急!慢慢来,大家共同学习,一切会搞懂的。

afan 发表于 2010-5-6 12:59:35

回复afan
老实说,还不是很明白"其实应该为有符合前面的表达式的字符串1个以上",要是有个例子就好了.
...
newuser 发表于 2010-5-6 12:47 http://www.autoitx.com/images/common/back.gif


    \d 等同于 ,这个无异议
   + 等同于 {1,} ,就是说1个以上;如果必须是1至3个那就得如你所写 {1,3} 之类
   也就是说 \d+ 等同于 {1,}
页: [1]
查看完整版本: StriingRegExp()的问题?[已解决]