1

我试图在 mirc usign 正则表达式上仅捕获用户名的昵称,但我无法捕获这是我想要获取用户名的数据

并涉及此正则表达式代码:

/^\x3a(:?(\[\w+\])?(\[\s\w+\s\]?))\s?(\w+)/i

这是关于正则表达式的:Regexer

我想获得第 1 组中的用户名。

所以有没有人有办法抓住这种情况?

if ($regex(info,$1-,/^\x3a(?::?(?:\[\w+\])?(?:\[\s\w+\s\]?)?)?\s?(\w+) (CHAT) (#\S+) \x3a([\x21])(hi|test)( |$)/i)) {
echo * NickName: $regml(info,1)
echo * Method: $regml(info,2)
echo * Channel: $regml(info,3)
echo * Symbol: $regml(info,4)
echo * Trigger: $regml(info,5)  }

:[ 标签 ] Xs_user 聊天 #test_channel :!hi <- 不工作!
:madhu CHAT #test_channel :!hi <- 这行得通

因此,如果 nick 是频道的运营商,则只需使用用户名即可进行比较。

4

1 回答 1

1

再添加两个?使(:?(\[\w+\])?(\[\s\w+\s\]))(\[\w+\])?(\[\s\w+\s\]?)组可选:

^\x3a(:?(\[\w+\])?(\[\s\w+\s\]?)?)?\s?(\w+)
                                ^ ^

请参阅正则表达式演示。如果您使用此正则表达式,用户名将在第 4 组中。

要将用户名放入 Group 1 ,请在打开后添加您不感兴趣的所有分组使用非捕获组:?:(

^\x3a(?::?(?:\[\w+\])?(?:\[\s\w+\s\]?)?)?\s?(\w+)
      ^^   ^^          ^^   

看到这个正则表达式演示

于 2016-06-14T09:33:02.830 回答