基于关键字拆分字符串

时间:2013-12-11 09:02:25

标签: java regex string java-ee split

我有字符串

 String x="http://www.allindiaflorist.com/imgs/arrangemen4.jpg***http://storyofpakistan.com/wp-content/uploads/2011/11/Rukn-AlaminMultan.jpg***"  ;

我想在***的基础上提取字符串,所以我应该得到大小为2的数组, 我这样做。

String[] explode=a.split("//***");
        img1=explode[0]; //`it gives java.util.regex.patternSyntaxException` 

我也试过

  String[] explode=a.split("***");
            img1=explode[0]; //`it gives java.util.regex.patternSyntaxException` 

我可以编写可以搜索***的自定义通用函数,但我想知道split()无效的原因 感谢

6 个答案:

答案 0 :(得分:3)

使用Pattern#quote

String[] explode=a.split(Pattern.quote("***"));

现在你不必为要逃脱的special character打破局面。方法“为指定的字符串返回文字模式字符串”。

(为了澄清,您收到错误是因为您应该逃避每个 *。)

答案 1 :(得分:2)

使用正则表达式[*]{3}。尝试,

String x="htt.....
String arr[] =x.split("[*]{3}");

答案 2 :(得分:2)

String str = "http://www.allindiaflorist.com/imgs/arrangemen4.jpg***http://storyofpakistan.com/wp-content/uploads/2011/11/Rukn-AlaminMultan.jpg***";
    String delim = "\\*\\*\\*";

    String[] arr= str.split(delim);

    System.out.println(arr[0]);
    System.out.println(arr[1]);

output

http://www.allindiaflorist.com/imgs/arrangemen4.jpg
http://storyofpakistan.com/wp-content/uploads/2011/11/Rukn-AlaminMultan.jpg

答案 3 :(得分:1)

使用*

逃脱\\
String[] arr=x.split("\\*\\*\\*");

答案 4 :(得分:1)

你可以试试这个:

String[] explode=a.split("\\Q***\\E");

\Q开始引用正则表达式。 \E结束引用正则表达式。

基本上,在\Q\E之间,元字符*将被视为普通字符(即*),没有特殊含义。

答案 5 :(得分:0)

试试这个代码,你可以使用错误的正则表达式模式。 它应该在[]

里面
public static void main(String args[])
       {
           String x="http://www.allindiaflorist.com/imgs/arrangemen4.jpg***http://storyofpakistan.com/wp-content/uploads/2011/11/Rukn-AlaminMultan.jpg***"  ;
      String[] explode=x.split("[***]");
           String img1=explode[0]; 
           System.out.println(img1);
       }