【问题标题】:java delimiter error [duplicate]java分隔符错误[重复]
【发布时间】:2012-10-27 22:49:44
【问题描述】:

我想在我的字符串中分隔“/*”:

例如

String str="6666 /* 555 / 777 * ttt";

// And result should be
result= 6666 ,  555 / 777 * ttt

我用

编写了程序
String[] line_split=line_str.split("/*");

我得到这个错误:

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0 *

谁有我的解决方案?

【问题讨论】:

  • 一个相当明显的解决方案是谷歌搜索'java.util.regex.PatternSyntaxException: Dangling meta character '*' near '...

标签: java regex string delimiter


【解决方案1】:

所以是的,它是一个元数据。但是有问题的表达式/* 是一个有效的正则表达式。这实际上有效,只是没有给出预期的结果:

System.out.println(Arrays.toString("aoeuaoue".split("/*")));

因此,您还没有粘贴重现问题的代码。但我认为要替换的真正字符串是类似的,但作为正则表达式是非法的。

【讨论】:

    【解决方案2】:

    错误信息说:

    在索引 0 * 附近悬空元字符 '*'

    * 是一个正则表达式元字符,您需要使用\\ 对其进行转义。


    在这种情况下,您可以使用Pattern 类来构建您的正则表达式,如下所示:

    String regex = Pattern.quote("/*");
    System.out.println(regex);
    

    输出是

    \Q/*\E

    这是你的正则表达式。

    【讨论】:

      【解决方案3】:

      String.split 采用Regex 进行拆分。而*Regex 中的一个元字符,它具有特殊含义——匹配它前面的模式0 or more

      你需要逃避:-

      String[] line_split=line_str.split("/\\*");
      

      【讨论】:

        猜你喜欢
        • 2017-12-19
        • 1970-01-01
        • 1970-01-01
        • 2011-11-21
        • 2017-07-24
        • 2019-09-02
        • 1970-01-01
        • 1970-01-01
        • 2010-11-19
        相关资源
        最近更新 更多