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

时间:2018-09-04 13:27:21

标签: regex autohotkey

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

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]*)

我正在使用https://autohotkey.com

中的autohotkey(一个Windows打开的源代码)编写脚本

1 个答案:

答案 0 :(得分:0)

您要匹配包含modified子字符串的行。正则表达式中的点默认情况下不与换行符匹配,因此您需要传递s(DOTALL)修饰符(可以将其与m,MULTILINE修饰符加在一起,从而使{{1} }匹配字符串位置的开头,^匹配行位置的结尾)。此外,要匹配非换行符,您需要$(而不是[^\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