You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java正则表达式调整需求:将含空格字符串匹配至Group 3

解决正则匹配带空格字符串的问题

嘿,这问题很好搞定——原正则里的\w+?只认字母、数字和下划线,空格不在它的匹配范围内,自然抓不到john doe里的空格部分。咱们只需要调整Group 3的匹配规则就行:

修改后的代码

String search="firstName:john doe,";
// 将Group3的\w+?替换为[^,]+?,匹配除逗号外的任意字符(包含空格)
Pattern pattern = Pattern.compile("(\\w+?)(:|<|>|=)([^,]+?),");
Matcher matcher = pattern.matcher(search+",");
while (matcher.find()) {
    System.out.println(matcher.group(1)); // firstName
    System.out.println(matcher.group(2)); // :
    System.out.println(matcher.group(3)); // john doe
}

改动说明

  • 原正则的(\w+?)只能匹配无空格的单词字符,空格不属于\w的覆盖范围,所以只能匹配到john就停止了。
  • 换成([^,]+?)后,[^,]是否定字符集,代表匹配除逗号之外的任意字符(包括空格、特殊符号等);+?是非贪婪匹配模式,确保刚好匹配到下一个逗号前的内容,不会出现过度匹配的情况。

额外提醒

如果你的业务场景里,值本身可能包含逗号(比如firstName:john, doe,),那这个规则就不适用了,得根据实际数据格式调整边界判断逻辑。但从你给出的示例来看,这个修改完全能满足需求。

内容的提问来源于stack exchange,提问作者M1r1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:15:58