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

Java如何用正则按「?+数字」分割字符串得到指定数组

解决字符串按"?+数字"整体分割的问题

你需要把?和后续数字作为整体分隔符,之前用的[?\\d]是字符类,会单独匹配?或数字,所以达不到预期效果。正确的做法是匹配?紧跟数字的完整组合:

正确正则与示例

使用正则\?\d+作为分割规则,其中:

  • \?:转义匹配字面量?(避免被当作正则元字符处理)
  • \d+:匹配一个或多个连续数字,确保把?及后续数字视为整体

示例代码:

const str = "select ?1 from students in ?2";
const splitResult = str.split(/\?\d+/).filter(item => item.trim() !== '');
console.log(splitResult); // 输出: ["select", "from students in"]

额外说明

  • 加上.filter(item => item.trim() !== '')是为了清除分割后可能产生的空字符串(比如分隔符在首尾的情况),如果你的输入不会出现这种场景,也可以省略该步骤。
  • 如果只需要匹配?后接单个数字,可以把\d+改为\d,但\d+能兼容?123这类多数字的情况,适用性更广。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:24:19