我现在正在使用autohotkey学习正则表达式,但无法弄清楚如何提取特定的字符串并将其保存到变量中?
我正在搜寻的文字行:
T NW CO NORWALK集线器NW 201-DS3-WLFRCTAICM5-NRWLCT02K16 [DS3 LEC] -1 -1 PSTN
我试图保存,仅NW 201-DS3-WLFRCTAICM5-NRWLCT02K16 [DS3 LEC]。
这是我的正则表达式代码:
NW \ D \ d.DS3。]
但是,如何将其存储为autohotkey中的变量?
我已经尝试过RegexMatch,但这仅显示位置。我做错了。
最佳答案
您可以提供第三个参数来保存匹配数组:
RegExMatch(str,"NW\D\d.*DS3.*\]",matches)
然后,
matches[0]
将包含匹配项。如果您在模式中使用捕获组,则可以使用其他索引来访问它们的值。如果对
"NW\D(\d.*DS3.*)\]"
使用"NW 5xxx DS3 yyy]
,则将整个字符串包含在matches[0]
中,并且matches[1]
将保留5xxx DS3 yyy
。参见AHK
RegExMatch
文档:FoundPos := RegExMatch(Haystack, NeedleRegEx [, UnquotedOutputVar = "", StartingPosition = 1])
UnquotedOutputVar
模式1(默认):OutputVar是变量的未引用名称,在其中存储与整个模式匹配的Haystack部分。如果未找到模式(即函数返回0),则此变量和下面的所有数组元素都为空白。
如果NeedleRegEx中存在任何capturing subpatterns,则其匹配项将存储在基本名称为OutputVar的pseudo-array中。例如,如果变量的名称为Match,则与第一个子模式匹配的子字符串将存储在Match1中,第二个子字符串将存储在Match2中,依此类推。例外是named subpatterns:它们是按名称而不是数字存储的。例如,与命名子模式
"(?P<Year>\d{4})"
匹配的子字符串将存储在MatchYear中。如果特定的子模式不匹配任何内容(或者该函数返回零),则将相应的变量设置为空白。