使用正则表达式获取第一个问题的标记名称

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

我遇到了以下正则表达式模式的问题:

m).*?^([^n]*)(modified)([^n]*)$.*

我想用替换剪贴板

Clipboard := RegExReplace(Clipboard, "m).*?^([^n]*)(modified)([^n]*)$.*" ,"" )

来源看起来像:

Ask Question    Interesting    326 Featured
Hot     Week     Month    1     vote    0    answers    12    views
Type Guard for empty object
typescript modified 2 mins ago kremerd 312
0    votes

预期结果应为:

typescript modified 2 mins ago kremerd 312

但它没有取而代之的。如果这有效,我想通过使用regExMatch稍后获取标记名^([^n]*)

我正在使用qazxsw poi的autohotkey(一个Windows开源)编写脚本

regex autohotkey
1个回答
0
投票

您想匹配包含https://autohotkey.com子字符串的行。默认情况下,正则表达式中的点与换行符不匹配,因此您需要传递modified(DOTALL)修饰符(您可以将它与s,MULTILINE,使m匹配字符串位置的起点和^的修饰符一起添加以匹配行尾位置)。此外,为了匹配非换行,你需要$(而不是[^\n])。

要解决您可能使用的问题

[^n]

通过RegExMatch(Clipboard, "s)^.*?(\n[^\n]*)(modified|asked|answered)", res) 获取整行值,通过res获取关键字前的文本,使用res1获取关键字本身。

细节

  • res2 - s)现在匹配包括换行符的任何字符
  • . - 字符串的开头
  • ^ - 任何0+字符,尽可能少
  • .*? - 第1组(稍后通过(\n[^\n]*)访问):换行后跟0行字符而不是换行字符
  • res1 - 三种选择中的任何一种:(modified|asked|answered)modifiedasked
© www.soinside.com 2019 - 2024. All rights reserved.