在某一点后停止正则表达式字符串

Stoping a Regex String after a certain point

我正在尝试让正则表达式字符串正常工作,我已经玩了几天,似乎碰到了可爱的 fu 墙。​​

我需要一种方法来阻止正则表达式匹配@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`

我想要做的是让第 2 组中只有 zycore 而不是它后面的文本,(@ 符号被删除,因为它在代码中不需要但在应用程序中需要 运行 它),它还需要仅使用 app plex 作为输入。

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

我试过了

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

您可以使用

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

regex demo

详情

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