ahk - 在字符(空格)后获取文本

问题描述 投票:0回答:1

我是Autohotkeys的新手。我正在尝试将所有文​​本删除到每行的第一个空格中,获取其他所有内容。

例:

txt1=something
txt2=other thing

var.="-1" " " txt1 " " txt2 "`n"
var.="2" " " txt1 " " txt2 "`n"
var.="4" " " txt1 " " txt2 "`n"
;; more add ...

FinalVar:=var
;...
msgbox % FinalVar
RETURN

当前输出:

-1 something other thing
2 something other thing
4 something other thing

我希望如何(所有最终YEar线不需要循环):

something other thing
something other thing
something other thing

在bash我可以使用类似SED的东西

有没有一种快速的方法在ahk中做同样的事情?

感谢您的关注。对不起我的英文!

regex string get autohotkey
1个回答
1
投票

您可以使用InStr命令的组合

InStr函数() 从左侧或右侧搜索给定出现的字符串。 FoundPos := InStr(Haystack, Needle , CaseSensitive := false, StartingPos := 1, Occurrence := 1)

SubStr命令。

SUBSTR() 从字符串中的指定位置检索一个或多个字符。 NewStr := SubStr(String, StartingPos , Length)

使用InStr,您可以找到var中第一个空格的位置。

使用SubStr,您可以将该位置之后的所有内容提取到字符串的末尾,如下所示:

StartingPos := InStr(var, " ")
var := SubStr(var, StartingPos + 1)

注意+ 1,因为你需要开始提取空格后的文本1位置,否则空格将是提取文本中的第一个字符。


要替换所有行中的前导文本,您可以使用RegExReplace

REGEXREPLACE() 替换字符串内的模式(正则表达式)的出现。

NewStr := RegExReplace(Haystack, NeedleRegEx , Replacement := "", OutputVarCount := "", Limit := -1, StartingPosition := 1)

FinalVar := RegExReplace(var, "m`a)^(.*? )?(.*)$", "$2")

m`a)are RegEx选项,^(.*? )?(.*)$是实际的搜索模式。

m Multiline。将Haystack视为单个行的集合(如果它包含换行符)而不是单个连续行。

`a:`a识别任何类型的换行符,即`r,`n,`r`n,`v / VT / vertical tab / chr(0xB),`f / FF / formfeed / chr(0xC)和NEL /下一行/ CHR(0x85)。

© www.soinside.com 2019 - 2024. All rights reserved.