找回密码
 加入
搜索
查看: 2485|回复: 7

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

  [复制链接]
发表于 2010-5-6 11:03:11 | 显示全部楼层 |阅读模式
本帖最后由 newuser 于 2010-5-6 12:48 编辑

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

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

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-5-6 11:05:16 | 显示全部楼层
不明白LZ的意思,把原字符串和需要出的结果放上来看看呢?
发表于 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[0] & ',' & $sR[1])
 楼主| 发表于 2010-5-6 12:01:46 | 显示全部楼层
回复 3# afan
谢谢,解决了?不过它的匹配符号真多真难理解,只能是用到了在学点.
不过还是想请教:
\d  相当于[0-9],  + 相当于 重复前面的字符,那么\d+该怎么理解呢?难道是2个[0-9]?
\h 匹配一个换行符,那么\h+damage该如何理解呢?
$Str = "You deflect 36 of Gnarly 25Monster's 279 damage 379 damage"
$sR = StringRegExp($Str, '([0-9]{1,3})(?: damage)', 3)
;$sR = StringRegExp($Str, '(\d+)\h+damage', 3)
If Not @Error Then MsgBox(0, 'SRE 示例 6 结果', $sR[0] & ',' & $sR[1])
发表于 2010-5-6 12:12:11 | 显示全部楼层
+ 相当于 重复前面的字符  ----  其实应该为有符合前面的表达式的字符串1个以上。\d+ 也就是说至少有一个数字。
\h+damage  ----  有一个以上空格,紧接着damage字符串

评分

参与人数 1金钱 +20 收起 理由
水木子 + 20 学习了,谢谢前辈的细心讲解。

查看全部评分

 楼主| 发表于 2010-5-6 12:47:39 | 显示全部楼层
回复 5# afan
老实说,还不是很明白"其实应该为有符合前面的表达式的字符串1个以上",要是有个例子就好了.
理解能力差,呵呵!
发表于 2010-5-6 12:51:40 | 显示全部楼层
回复  afan
老实说,还不是很明白"其实应该为有符合前面的表达式的字符串1个以上",要是有个例子就好了.
...
newuser 发表于 2010-5-6 12:47

不急!不急!慢慢来,大家共同学习,一切会搞懂的。
发表于 2010-5-6 12:59:35 | 显示全部楼层
回复  afan
老实说,还不是很明白"其实应该为有符合前面的表达式的字符串1个以上",要是有个例子就好了.
...
newuser 发表于 2010-5-6 12:47



    \d 等同于 [0-9] ,这个无异议
   + 等同于 {1,} ,就是说1个以上;如果必须是1至3个那就得如你所写 {1,3} 之类
   也就是说 \d+ 等同于 [0-9]{1,}
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-9 20:47 , Processed in 0.091398 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表