我有一个来自IRC聊天消息的字符串,看起来像这样
!addcom !commandName This is a command response
或者也可能看起来像这样
!addcom -ul=mod !commandName This is a command response
基本上我需要在第二个!commandName
之后得到整个短语,并且我有一些问题想出如何在!commandName
之后的空格之后立即开始以获得剩余的短语。
我在一个正则表达式测试器中开始使用它并能够选择第二个!commandName
,但现在我需要弄清楚如何获取其余的字符串。
!+\w+
答案 0 :(得分:4)
这很容易。使用带有捕获组的否定字符类
![^ ]+\s*([^!]+)$
捕获组1将包含数据。
[^ ]+
匹配空格以外的任何内容。此模式与!
([^!]+)
否定字符类,匹配!
以外的任何内容。这种否定确保它选择第二个!something
$
将正则表达式锚定在字符串的末尾。
示例强>
"!addcom -ul=mod !commandName This is a command respons".match(/![^ ]+\s*([^!]+)$/)[1]
=> "This is a command respons"
"!addcom !commandName This is a command respons".match(/![^ ]+\s*([^!]+)$/)[1]
=> "This is a command respons"
答案 1 :(得分:2)
另一种选择是替换你不想要的初始子字符串。
.*
令牌会占用所有字符,直到最后一次出现!<word>
。
var s = '!addcom !commandName This is a command response',
r = s.replace(/.*!\w+/, '').trim();
console.log(r); //=> "This is a command response"