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

时间:2019-04-07 02:12:40

标签: regex string get autohotkey

我是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

我希望如何(FinalVar的所有代码行都需要循环):

something other thing
something other thing
something other thing

在bash中,我可以使用SED之类的东西

在ahk中有没有做相同事情的快速方法?

感谢您的关注。抱歉,我的英文!

1 个答案:

答案 0 :(得分: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)是RegEx选项,^(.*? )?(.*)$是实际的搜索模式。

  

m 多行。将草垛视为单个行的集合(如果   它包含换行符),而不是一个连续的行。

     

`a :`a可以识别任何类型的换行符,即`r,`n,`r`n,   v / VT /垂直制表符/ chr(0xB),f / FF /换页/ chr(0xC)和   NEL /下一行/ chr(0x85)。