正则表达式在“||”之间和之后提取文本符号

时间:2013-10-31 11:56:41

标签: java regex

我没有java中的正则表达式的经验,但我认为我们可以使用regexp解决这个问题,它比我的例子更容易。 我有一个带有||个符号的文本。文字可以看起来像:
1)aaa||bbb||ccc
2)aaa||||ccc
3)||bbb||ccc
4)|| ||cccc等 我希望在第一个|| - bbb 之后提取文本,然后在第二个|| - ccc 之后提取文本。我做了:

Pattern p = Pattern.compile("||",Pattern,DOTALL);
String types[] = p.split(stringToParse);

但是当字符串没有3个部分时,这不起作用。

第二个想法是:

Pattern p = Pattern.compile("||",Pattern,DOTALL);
Matcher m= p.matcher(strToParse);
while (m.find()) {
 System.out.println(m.group() + " " + m.start() + " " + m.end());
}

然后我知道||何时发生并且可以做子串。 是否存在更简单,更简单的方法来解决这个问题?

3 个答案:

答案 0 :(得分:0)

如上所述人们说不要将它用于HTML解析器。

Pattern p = Pattern.compile("(<br>)\\w*(<br>)");
Matcher m= p.matcher(c);
while (m.find()) {
 System.out.println(m.group().replace("<br>", ""));// replace <br>.
}

答案 1 :(得分:0)

此:

String[] data = { 
        "aaa||bbb||ccc", 
        "aaa||||ccc", 
        "||bbb||ccc", 
        "|| ||cccc" 
};
for (String string : data) {
    String[] split = string.split(Pattern.quote("||"));
    System.out.println("0:"+split[0] + ", 1:" + split[1] + " 2:" + split[2]);
}

给出:

0:aaa, 1:bbb 2:ccc
0:aaa, 1: 2:ccc
0:, 1:bbb 2:ccc
0:, 1:  2:cccc

请注意使用Pattern.quote()转义正则表达式,|special regex characters

答案 2 :(得分:0)

你误解了分裂的文档。 这将在stringToParse:

之间拆分字符串
String types[] = between.split(stringToParse);

您可能希望在以下位置之间拆分字符串stringToParse:

String types[] = stringToParse.split(between);

例如:

String s = "a:b:c";
String letters[] = s.split(":");