我现在正在学习使用自动热键的regex,但不知道如何提取特定的字符串并保存到变量中?
我正在搜索的文本行:t NW CO NORWALK集线器NW 201- DS3 -WLFRCTAICM5-NW 02K16 DS3 lec-1 PSTN
我试图保存,NW 201-DS3-WLFRCTAICM5-NRWLCT02K16 DS3 LEC。
这是我的regex代码: NW\D\d.DS3.]
但是如何将它作为一个变量存储在自动热键中呢?
我试过了RegexMatch,但这只显示了这个位置。我做错了什么。
发布于 2017-12-27 11:55:51
您可以提供包含匹配数组的第三个参数:
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 Mode 1(默认): OutputVar是用于存储与整个模式匹配的部分的变量的未引号。如果找不到模式(即,如果函数返回0),则此变量和下面的所有数组元素都为空。如果捕获子模式在NeedleRegEx中存在,则它们的匹配存储在基名为OutputVar的伪阵中。例如,如果变量的名称匹配,匹配第一个子模式的子字符串将存储在Match1中,第二个将存储在Match2中,依此类推。这方面的例外是命名子模式:它们是按名称而不是数字存储的。例如,匹配命名子模式"(?P<Year>\d{4})"的子字符串将存储在MatchYear中。如果某个特定的子模式与任何内容不匹配(或者如果函数返回零),则相应的变量将为空。
发布于 2017-12-31 10:11:50
; If you want to delete ALL ....
Only(ByRef C)
{
/*
RegExReplace
https://autohotkey.com/docs/commands/RegExReplace.htm
*/
; NW 201-DS3-WLFRCTAICM5-NRWLCT02K16 [DS3 LEC]
C:=RegExReplace(C, "NW\s[\w-]+\s\[[\w\s]+\]","",ReplacementCount,-1)
if (ReplacementCount = 0)
return C
else
return Only(C)
} ; Only(ByRef C)
string:="Line of text I am searching: T NW CO NORWALK HUB NW 201-DS3-WLFRCTAICM5-NRWLCT02K16 [DS3 LEC] -1 -1 PSTN"
Result:=Only(string)
MsgBox, % Result
MsgBox, % Only(string)https://stackoverflow.com/questions/47983063
复制相似问题