首页 > 解决方案 > 当第一个单词以 @ 开头时检测 2 个连续单词的正则表达式

问题描述

我想知道检测以@开头的名称的正则表达式。例如,在“嗨@Steve Rogers,你好吗?”这句话中,我想使用正则表达式提取@Steve Rogers。我尝试使用Pattern.compile("@\\s*(\\w+)").matcher(text),但只检测到“@Steve”。我还应该使用什么。??

谢谢

标签: regex-group

解决方案


如果您不想匹配一个 @ 符号后跟一个空格@ ,那么它后面可以有多个单词:

(?<!\S)@\w+(?:\h+\w+)?

解释

  • (?<!\S)在左侧断言空白边界
  • @从字面上匹配
  • \w+匹配 1+ 个单词字符
  • (?:\s+\w+)?可选择匹配 1+ 个水平空白字符和 1+ 个单词字符

正则表达式演示

在 Java 中

String regex = "(?<!\\S)@\\w+(?:\\h+\\w+)?";

推荐阅读