正则表达式在两个标记的中间获取文本

时间:2012-07-23 13:50:49

标签: java regex

首先,感谢您的帮助,我坚持了这个问题一个星期。我谷歌搜索它,但没有Java响应,只有Python和其他我不知道的语言。

我正在使用java开发一个搜索一对字符串的应用程序,并在这两个单词的中间获取文本。例子:

<A name=1></a>Some text with break lines<A name=300></a>

主要问题是,我需要在这两个游行之间得到文本,直到。 Grabe这个文本并将其添加到StringBuffer。

我这样做了:

Pattern regex   = Pattern.compile("<A name=1><\\/a>((.|\\s)+?)<A name=300><\\/a>");
Matcher matcher = regex.matcher(htmlFileReading);

if (matcher.find()) {
    System.out.println("Finded");
    System.out.println(matcher.groupCount());
}

它可以工作,但是当我尝试大于但不是那么大的东西时,它会返回堆栈溢出错误。

如何获得这两个标记之间的文字?非常感谢,抱歉我的英语不好。

2 个答案:

答案 0 :(得分:1)

不确定是对的,但尝试这样的事情来进行“轻微”递归:

// .* before and after if needed
Pattern regex   = Pattern.compile(".*<A name=1><\\/a>(.*?)<A name=300><\\/a>.*");
System.output.println(regex.matcher(myStringToSearchInside).replaceAll("$1"));

为newLine编辑

答案 1 :(得分:0)

如果您的目标是从xml中提取文本,建议使用XSLT