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
相关产品推荐
相关产品推荐

