在特定点后停止正则表达式字符串

时间:2018-06-20 19:19:30

标签: javascript regex hubot

我正在尝试使正则表达式字符串起作用,我已经玩了几天了,而且似乎撞到了可爱的赋壁。

我需要一种方法来阻止正则表达式在@username之后匹配

我的Regex字符串看起来像这样(app plex) ?(?:@(.*)|)

因此,假设输入为app plex @zycore look at this,则输出为:

Match 1
Full match  0-16    `app plex @zycore`
Group 1.    n/a `app plex`
Group 2.    n/a `zycore look at this`

我想做的是拥有它,因此只有zycore位于组2中,而不是其后的文本,(@符号已删除,因为代码中不需要它,但运行它的应用程序中则需要它),它也只需使用app plex作为输入。

我尝试了多种变体,但似乎没有任何效果,我正在使用regex101.com测试字符串。任何帮助,将不胜感激。

我尝试过

(app plex) ?(?:@(.*)|)
(app plex) ?(?:@(.*)|)[\s]
(app plex) ?(?:@(.*)[\s]|)

1 个答案:

答案 0 :(得分:0)

您可以使用

(app plex) ?(?:@(\S*))?

请参见regex demo

详细信息

  • (app plex)-第1组:app plex子字符串
  • ?-可选空格
  • (?:@(\S*))?-可选的非捕获组matchin 1或0次出现
    • @-一个@字符
    • (\S*)-第2组:0+个非空格字符。