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

How to do regular Expression in AutoIt Script

在 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","") 

有人可以帮我吗

不熟悉 autoit,但请记住,正则表达式必须完全匹配您的字符串才能捕获结果。例如,如果您的字符串是 goatgoater.

(goat)s 将不会捕获单词 goat

您忘记在正则表达式中添加 ],因此您的模式与字符串不匹配,并且不会提取捕获组。此外,我并不完全相信 ' 的用法。基于 this 页面,您可以执行类似 StringRegExp(yourstring, 'RX_IST2_AM [PID:([0-9]{1,6}) NPID:([0-9]{1,5}) SID:([0-9]{1,9})]', $STR_REGEXPARRAYGLOBALMATCH)</code> 的操作,<code> 将分别是您的结果。但也许你的方法也有效。

documentation 所述,您应该写前缀 REGEXPTITLE: 并用方括号括起所有内容,但 "escape" 所有内容都包括点(. ) 和带反斜杠 (\) 的空格 (</code>) 而不是 <code>[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(...)-Function 它无论如何都没有意义,因为它只是匹配而不是替换或返回正则表达式中的任何内容。 根据 regex101 both work, with the round brackets and without - 您应该始终使用像本网站这样的工具来确认您的表达式确实适用于您的输入字符串。