regex-group - 当第一个单词以 @ 开头时检测 2 个连续单词的正则表达式
问题描述
我想知道检测以@开头的名称的正则表达式。例如,在“嗨@Steve Rogers,你好吗?”这句话中,我想使用正则表达式提取@Steve Rogers。我尝试使用Pattern.compile("@\\s*(\\w+)").matcher(text)
,但只检测到“@Steve”。我还应该使用什么。??
谢谢
解决方案
如果您不想匹配一个 @ 符号后跟一个空格@
,那么它后面可以有多个单词:
(?<!\S)@\w+(?:\h+\w+)?
解释
(?<!\S)
在左侧断言空白边界@
从字面上匹配\w+
匹配 1+ 个单词字符(?:\s+\w+)?
可选择匹配 1+ 个水平空白字符和 1+ 个单词字符
在 Java 中
String regex = "(?<!\\S)@\\w+(?:\\h+\\w+)?";
推荐阅读
- php - 如何向多对多数据透视表添加额外的列
- node.js - 我是使用 node.js 制作不和谐机器人的新手,我遇到了错误,它说第 14 行和第 18 行中没有定义消息
- django - Django 命令 - django-admin 命令不起作用
- r - 计算另一列中两列的平均值
- django - Django Form - 设置数据
- mongodb-query - MongoDB:如何从查询中删除重复记录?
- android - 无法在 android studio 上启动 android 应用程序(反应原生)
- ruby-on-rails - 如何避免 bootsnap 和 railties 导致此错误?
- python-3.x - 如何在 pandas 中用 null 替换空字符串?
- python - netmiko:send_config_from_file:显示设备证书时执行中断