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

Java中使用String.replaceAll处理符号及\p{P}匹配标点原理咨询

问题1:\p{P}标点匹配原理解析

\p{P}是Java正则表达式支持的Unicode属性类,其中P是Unicode字符分类中「标点(Punctuation)」的缩写,会匹配所有Unicode标准中被归类为标点的字符,共包含7个子类:

  • \p{Pc}:连接类标点,如下划线
  • \p{Pd}:短横线/破折号类标点
  • \p{Ps}:左包裹类标点,如左括号、左方括号、左大括号
  • \p{Pe}:右包裹类标点,如右括号、右方括号、右大括号
  • \p{Pi}:前置引号类标点,如左双引号、左单引号
  • \p{Pf}:后置引号类标点,如右双引号、右单引号
  • \p{Po}:其他标点,如逗号、句号、感叹号、冒号等

注意在Java字符串中写正则时,反斜杠需要额外转义,所以实际使用时要写成\\p{P}。这个规则会匹配所有标点,如果你需要保留部分标点(比如第二个需求里的逗号),就不能直接用这个做全局替换。

问题2:指定字符串转换的replaceAll实现方案

你的需求可以通过两次链式调用replaceAll实现,逻辑清晰且易维护:

  1. 第一次替换匹配所有方括号、双引号,直接移除
  2. 第二次替换把逗号替换为「逗号+空格」的格式

完整代码示例:

String category = "[\"restaurant\",\"bar\",\"burger joint\"]";
String updatedCategory = category
    // 移除所有方括号、双引号
    .replaceAll("[\\[\\]\"]", "")
    // 给逗号后加空格
    .replaceAll(",", ", ");

执行后updatedCategory的值正好是目标结果restaurant, bar, burger joint。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:54:04