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

如何使用正则表达式分割含大写字母、数字及括号的字符串?

解决字符串分割需求:分离大写开头单词、数字与括号

你的需求是将字符串中的大写开头单词、数字、括号分别用空格分隔,比如把"Hakan2Ev"转为"Hakan 2 Ev","(Ha2Oy2)12"转为"( Ha 2 Oy 2 ) 12"。之前的代码仅能处理大写字母开头的分割,这里提供更完善的正则方案:

实现代码

用replaceAll方法一步完成分隔,无需拆分数组再拼接:

String input = "(Ha2Oy2)12"; // 示例输入
String output = input.replaceAll("(?<=\\p{Ll})(?=\\p{Lu})|(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)|(?<=\\))(?=\\S)|(?<=\\S)(?=\\()", " ");
System.out.println(output); // 输出: ( Ha 2 Oy 2 ) 12

正则规则解释

正则里的每个分组对应一种需要插入空格的场景:

  • (?<=\p{Ll})(?=\p{Lu}):小写字母后紧跟大写字母时,中间加空格(比如"kanE"→"kan E")
  • (?<=\D)(?=\d):非数字字符后紧跟数字时,中间加空格(比如"Hakan2"→"Hakan 2")
  • (?<=\d)(?=\D):数字后紧跟非数字字符时,中间加空格(比如"2Ev"→"2 Ev")
  • (?<=\))(?=\S):右括号后紧跟非空白字符时,中间加空格(比如")12"→") 12")
  • (?<=\S)(?=\():非空白字符后紧跟左括号时,中间加空格(比如"Ha("→"Ha (")

测试验证

把你的测试输入代入代码,结果完全符合预期:

  • "Hakan2Ev" → Hakan 2 Ev
  • "Hakan2Ev2" → Hakan 2 Ev 2
  • "Ha2Oy2Het3Magara4" → Ha 2 Oy 2 Het 3 Magara 4
  • "(Ha2Oy2)12" → ( Ha 2 Oy 2 ) 12

内容的提问来源于stack exchange,提问作者Eyüp Yetkin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:25:25