【问题标题】:How to pattern match [ and ] in Java?如何在 Java 中模式匹配 [ 和 ]?
【发布时间】:2015-08-31 12:31:26
【问题描述】:

字符串格式如下:

[anything anything]

两者之间用空格隔开,'anything's。

我试过了:

(string).replaceAll("(^[)|(]$)","");

(string).replaceAll("(^\[)|(\]$)","");

但后者给了我一个编译错误,而第一个没有做任何事情。我基于以下实现了我当前的解决方案:

Java Regex to remove start/end single quotes but leave inside quotes

环顾 SO 给我带来了许多问题,这些问题回答了与我类似的问题,但实施他们的解决方案不起作用(他们要么什么都不做,要么产生编译错误):

regex - match brackets but exclude them from results

Regular Expressions on Punctuation

我做错了什么?

【问题讨论】:

  • 必须转义\
  • 有人发布了正确的解决方案,并在我评论时将其删除。不管是谁,都是正确的,所以请重新发布!
  • 您必须将 Java 文字字符串中的 \ 转义为 \\,以便正则表达式解析器将其解释为 \[ (这意味着文字 [ )
  • 是的,双重转义是 Java 的东西——正则表达式本身应该只是一个单一的 \,但 Java 也将 \ 字符视为转义字符,因此您必须将其加倍。
  • @apgp88 是的,该建议在我的脚本中有效。原因正如 aryn 所说

标签: java regex


【解决方案1】:

由于 Java 和正则表达式都将 \ 字符视为转义字符,因此在 Java 文字字符串中使用时实际上必须将它们加倍。 所以正则表达式:

(^\[)|(\]$)

在一个Java字符串中实际上应该是:

"(^\\[)|(\\]$)"

【讨论】:

    猜你喜欢
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 2012-06-28
    • 2015-04-28
    相关资源
    最近更新 更多