如何在AutoIt脚本中进行正则表达式

时间:2015-07-03 10:14:21

标签: regex autoit

在自动脚本中,我无法为以下字符串执行正则表达式此处的数字将始终更改。

Actual String = _WinWaitActivate("RX_IST2_AM [PID:942564 NPID:10991 SID:498702881] sbivvrwm060.dev.ib.tor.Test.com:30000","")

这里是PID,NPID& SID:将会改变,其余的东西总是不变的。

我在下面尝试过的是

_WinWaitActivate("RX_IST2_AM [PID:'([0-9]{1,6})' NPID:'([0-9]{1,5})' SID:'([0-9]{1,9})' sbivvrwm060.dev.ib.tor.Test.com:30000","") 

有人可以帮助我

2 个答案:

答案 0 :(得分:1)

不熟悉autoit,但请记住,正则表达式必须完全匹配您的字符串才能捕获结果。例如,如果您的字符串为(goat)sgoatgoat将不会捕获goater字样。

您忘记在正则表达式中添加],因此您的模式与字符串不匹配,并且不会提取捕获组。我也没有完全卖掉'的用法。根据{{​​3}}页面,您可以执行类似StringRegExp(yourstring, 'RX_IST2_AM [PID:([0-9]{1,6}) NPID:([0-9]{1,5}) SID:([0-9]{1,9})]', $STR_REGEXPARRAYGLOBALMATCH)$1$2$3的操作。但也许你的方法也有效。

答案 1 :(得分:1)

正如documentation中所述,你应该写前缀REGEXPTITLE:并用方括号包围所有内容,但是“转义”所有包括点(.)和空格( )使用反斜杠(\)代替[0-9],您可以使用\d "[REGEXPTITLE:RX_IST2_AM\ \[PID:(\d{1,6})\ NPID:(\d{1,5})\ SID:(\d{1,9})\] sbivvrwm060\.dev\.ib\.tor\.Test\.com:30000]"作为Win...(...)的参数 - 功能

您甚至可以省略圆括号((...)),但如果您不希望捕获内容以进一步处理它,请使用StringRegExp(...)StringRegExpReplace(...) - 使用它们。 _WinWaitActivete(...) - 函数无论如何都没有意义,因为它只是匹配而不是替换或返回正则表达式中的任何内容。 根据{{​​3}}工作,regex101圆括号和with - 您应该始终使用此网站之类的工具来确认您的表达式实际上适用于您的输入字符串。