【问题标题】:How to split a java string with "("? [duplicate]如何用“(”分割java字符串?[重复]
【发布时间】:2019-06-26 06:09:00
【问题描述】:

我正在尝试用字符“(”分割一个 java 字符串。

例如:

split("wer(sde")= "wer"+"sde".

但它给出了例外。有没有办法使用 split() 函数来拆分这个字符串,而无需将字符“(”更改为其他字符。

String[] cp=cmd.split("{");

输出: 线程“主”java.util.regex.PatternSyntaxException 中的异常:非法重复

【问题讨论】:

  • 用\\转义在正则表达式中具有特定含义的字符/表达式必须转义才能被解释为字符。
  • split("\\(");
  • @Basi 编译错误,\( 不是有效的 Java 字符,需要第二次转义 \\(
  • split("[()]"),因为你想在()拆分-在[]里面他们失去了特殊意义

标签: java regex string split


【解决方案1】:

问题是,split() 接收一个正则表达式作为参数。 {}() 都是元字符,在正则表达式中具有特殊含义,因此您需要像这样对它们进行转义:

String[] cp = cmd.split("\\(|\\)");

【讨论】:

    【解决方案2】:

    String 的方法split 接受String,该参数是一个正则表达式:

    public String[] split(String regex)
    Splits this string around matches of the given regular expression.
    

    由于( 是正则表达式中的保留字符,您需要对其进行转义\(
    但在 Java 中,您需要转义两次 \\(,一次用于String,第二次用于正则表达式

    这给出了:

    s.split("\\(");
    

    【讨论】:

      【解决方案3】:

      括号在 RegEx 中具有某种含义,它们用于将字符组合在一起。因此,如果您打算引用文字字符 '(',您必须在 RegEx 中对其进行转义:

      String[] cp = cmd.split("\\(");
      

      注意使用两个反斜杠。这是因为 JVM 还将反斜杠解释为用于转义目的的元字符,因此您必须使用另一个反斜杠 escape 反斜杠本身才能使其进入正则表达式。

      【讨论】:

        猜你喜欢
        • 2016-02-14
        • 1970-01-01
        • 2013-01-27
        • 1970-01-01
        • 2015-01-01
        • 2011-08-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多