1

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

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

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

主要问题是,我需要在这两个边界之间获取文本,直到 . 抓取此文本并将其添加到 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());
}

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

我怎样才能得到这两个标记之间的文字?非常感谢,对不起我的英语不好。

4

2 回答 2

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 编辑包括

于 2012-07-23T14:23:15.803 回答
0

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

于 2012-07-23T14:14:56.940 回答