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

如何编写Java正则表达式以匹配NEW D City和1259669?

解决Java正则匹配带空格字段的问题

嘿,我来帮你搞定这个正则小坑!你之前用(?<=:\s)\w+只能拿到NEW而不是完整的NEW D City,核心原因是\w只能匹配字母、数字和下划线,空格不在它的匹配范围内,所以碰到空格就直接停了,自然拿不到后面的D City。

给你两个实用的解决方案,看你需求选:

方案1:通用匹配冒号后的所有内容(直到分隔符或结尾)

这个正则能适配冒号后带任意字符(包括空格)的场景,只要内容到|或者字符串结尾就停止:

String regex = "(?<=:\\s)(.*?)(?= \\| |$)";

正则拆解:

  • (?<=:\\s):正向零宽断言,确保匹配内容的前面是冒号+空格
  • (.*?):非贪婪模式匹配任意字符(除换行),避免过度匹配到后面的内容
  • (?= \\| |$):正向零宽断言,确保匹配内容的后面是|分隔符或者字符串结尾

用Java代码测试的话,会依次输出NEW D City和1259669,完美符合你的需求。

方案2:精准匹配固定格式的两个字段

如果你的输入格式一直是Object No: XXX | Item ID: YYY这种固定结构,用分组捕获会更精准:

String regex = "Object No: (.*?) \\| Item ID: (\\d+)";

用法示例:

String input = "Object No: NEW D City | Item ID: 1259669";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
    String city = matcher.group(1); // 拿到NEW D City
    String itemId = matcher.group(2); // 拿到1259669
}

这里(.*?)捕获城市名称(带空格),(\d+)专门匹配数字ID,针对性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:40:24