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

