java - 如何将字符串拆分为两个考虑字符串末尾的数字(在方括号内)

标签 java regex split

我需要使用正则表达式使用给定的分隔符将字符串分成两部分。 示例字符串和预期输出如下

testnames[3] ===> testnames,3
3alpha[0] ====> 3alpha, 0
beta[4]value[2] ===> beta[4]value, 2
gama4[23] ===> gama4, 23
tama[2334] ====> tama, 2334
tes[t[ ===> No matches
try[]t ===> No matches

如果输入字符串末尾的方括号内有数字,则每个字符串都应一分为二。

谁能告诉我一个正则表达式来做到这一点?

注意: 我找到了正则表达式:"\[(-?\d+)\]$"。 但这只给了我方括号内的数字,没有给字符串的其余部分

最佳答案

您可以使用带有 2 个捕获组的贪心匹配替换:

正则表达式:

^(.*)\[(\d+)\]

替换:

$1, $2

RegEx Demo

Java 代码:

String repl = str.replaceFirst("^(.*)\\[(\\d+)\\]", "$1, $2");

正则表达式解释:

  • ^:开始
  • (.*):贪婪地匹配捕获组 #1 中的 0 个或多个字符
  • \[:匹配一个[
  • (\d+):匹配捕获组 #2 中的 1 个或多个数字
  • \]:匹配一个]

关于java - 如何将字符串拆分为两个考虑字符串末尾的数字(在方括号内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66812816/

相关文章:

java - Spring Boot OAuth2 单点注销(注销)

java - 拆分公式字符串

javascript - 从javascript中的html字符串获取子字符串

java - 返回在线数字和+号

regex - 正则表达式 : Replacing Portions of a Regex Match

arrays - 如何将 "empty line"模式的文件拆分为变量数组? (仅使用 native bash)

java - 在字符串中每隔 ""之前或 160 个字符处插入 <SPLIT>

java - 使用 javascript 命令重新渲染字段

java - WireMock 中的查询参数

java - 将 EditText 中的文本获取到另一个 Activity 的字符串中