本帖最后由 easefull 于 2011-4-18 01:59 编辑
假设有一个字符串Local $sString = "You deflect 36 of Gnarly Monster's 279 damage"
要提取damage前的数值279(假设字符串里面的两个数字都是0~999范围内);代码一
#include <Array.au3>
Local $sString = "You deflect 36 of Gnarly Monster's 279 damage"
$asResult = StringRegExp($sString, '\d?\d?\d(?:\sdamage)', 1)
If Not IsArray($asResult) Then
MsgBox(4096, "", "返回结果非数组" &@LF& $asResult)
Else
_ArrayDisplay($asResult)
EndIf
在代码一里面,可以取得到包含279的字符串 "279 damage"
我的问题是:为什么正则参数里面加了一对括号以后,结果就不一样了呢?(代码二);代码二
#include <Array.au3>
Local $sString = "You deflect 36 of Gnarly Monster's 279 damage"
$asResult = StringRegExp($sString, '(\d?\d?\d)(?:\sdamage)', 1)
If Not IsArray($asResult) Then
MsgBox(4096, "", "返回结果非数组" &@LF& $asResult)
Else
_ArrayDisplay($asResult)
EndIf
注:我使用Code Architects Regex Tester测试的时候,加不加括号结果都是一样的 |