正则匹配求助:提取以@开头的完整单词内容
解决正则提取@后到空格前内容的问题
你的问题出在之前的正则 (?<=@)(.*)(\s+) 上:.* 是贪婪匹配,会把@之后到最后一个空格前的所有内容(包括in这类字符)都匹配到,而且\s+还会把空格纳入匹配范围,自然拿不到想要的结果。
推荐两种可行的正则方案:
方案1:用正向断言+非空白字符匹配
直接匹配@后面的所有非空白字符,无需捕获组:
(?<=@)\S+
(?<=@):正向肯定断言,确保当前位置前是@\S+:匹配一个或多个非空白字符,刚好截取到第一个空格前的目标内容
方案2:用捕获组提取
如果你的工具依赖捕获组获取结果,可以用这个:
@(\S+)
提取捕获组1的内容即可得到test1、test2,这个写法更简洁,兼容性也更好。
测试这两个正则,都能从你的输入字符串里精准提取出目标结果。
内容的提问来源于stack exchange,提问作者Fill
相关产品推荐
相关产品推荐

