我试图在mirc usign regex上只捕获用户名的昵称,但我无法抓住这是我想要的用户名
并涉及此正则表达式代码:
/^\x3a(:?(\[\w+\])?(\[\s\w+\s\]?))\s?(\w+)/i
以下是regexer: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) }
:[Tag] Xs_user CHAT #test_channel:!hi< - 不工作!
:madhu CHAT #test_channel :!嗨< - 这个有用
所以如果缺口是渠道的运营商,那么只需要用户名就可以比较。
答案 0 :(得分:1)
再添加两个?
以使(:?(\[\w+\])?(\[\s\w+\s\]))
和(\[\w+\])?(\[\s\w+\s\]?)
组可选:
^\x3a(:?(\[\w+\])?(\[\s\w+\s\]?)?)?\s?(\w+)
^ ^
请参阅regex demo。如果您使用此正则表达式,则用户名将在第4组中。
要将用户名转换为第1组,请在打开{{?:
后添加(
,对所有您不感兴趣的分组使用非捕获组1}}:
^\x3a(?::?(?:\[\w+\])?(?:\[\s\w+\s\]?)?)?\s?(\w+)
^^ ^^ ^^