匹配标记后的短语

Match phrase after token

本文关键字:短语      更新时间:2023-09-26

我有一个来自IRC聊天消息的字符串,它看起来像这样

!addcom !commandName This is a command response

或者也可以像这样

!addcom -ul=mod !commandName This is a command response

基本上,我需要在第二个!commandName之后获得整个短语,并且我有一些问题,弄清楚如何在!commandName之后的空间之后开始获得剩余的短语。

我开始在一个正则表达式测试器,并能够选择第二个!commandName,但现在我需要弄清楚如何得到字符串的其余部分。

 !+'w+

这很简单。使用反字符类和捕获组

![^ ]+'s*([^!]+)$
  • 捕获组1将包含数据

  • [^ ]+匹配除空格以外的任何内容。此模式匹配!

  • 后面的命令
  • ([^!]+)否定的字符类,匹配!以外的任何字符。此否定确保它选择第二个!something

  • $将正则表达式锚定在字符串的末尾

<

Regex演示/strong>

"!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"

另一种选择是替换您不想要的初始子字符串。

.*标记将吃掉所有字符,直到最后出现!<word>

var s = '!addcom !commandName This is a command response',
    r = s.replace(/.*!'w+/, '').trim();
console.log(r); //=> "This is a command response"