0

我没有使用 Java 中的正则表达式的经验,但我认为我们可以使用正则表达式解决这个问题,而且它比我的示例更容易。我有一个带有双||符号的文本。文本可以看起来像:
1) aaa||bbb||ccc
2) aaa||||ccc
3) ||bbb||ccc
4)|| ||cccc等。
我想在 first ||- bbb之后提取文本,然后在 second ||- 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());
}

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

4

3 回答 3

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(),因为|特殊的正则表达式字符

于 2013-10-31T13:04:26.900 回答
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>.
}
于 2013-10-31T12:31:56.603 回答
0

您误解了拆分文档。这将在 stringToParse 之间拆分字符串:

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

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

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

前任:

String s = "a:b:c";
String letters[] = s.split(":"); 
于 2013-10-31T13:14:48.563 回答