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

Java 在两个标记中间获取文本的正则表达式,java,regex,Java,Regex,首先,谢谢你的帮助,我在这个问题上被困了一个星期。我在这里搜索了谷歌,但没有Java响应,只有Python和其他我不知道的语言 我用java开发了一个应用程序,它搜索一对字符串,并在这两个单词的中间获取文本。例如: <A name=1></a>Some text with break lines<A name=300></a> 一些带换行符的文本 主要的问题是,我需要得到这两个主题之间的文本,直到。抓取此文本并将其添加到StringBuffer

首先,谢谢你的帮助,我在这个问题上被困了一个星期。我在这里搜索了谷歌,但没有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());
}
Pattern regex=Pattern.compile(((.|\\s)+?);
Matcher Matcher=regex.Matcher(htmlFileReading);
if(matcher.find()){
System.out.println(“Find”);
System.out.println(matcher.groupCount());
}
它是有效的,但当我尝试大于但不是太大的东西时,它返回堆栈溢出错误


我怎样才能得到这两个标记之间的文本?非常感谢,很抱歉我的英语不好。

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

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

不确定是否正确,但请尝试以下方法以实现“轻”递归:

// .* 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"));
/.*
Pattern regex=Pattern.compile(“.*(.*?。”);
System.output.println(regex.matcher(myStringToSearchInside.replaceAll($1));

为新行编辑的include

不确定是否正确,但请尝试以下方法以实现“轻”递归:

// .* 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"));
/.*
Pattern regex=Pattern.compile(“.*(.*?。”);
System.output.println(regex.matcher(myStringToSearchInside.replaceAll($1));


为新行编辑的include

不起作用吗?顺便说一句,
(.|\\s)+?
+?
相同。请在它不起作用的地方张贴案例。它起作用,但在线程“main”java.lang.StackOverflower中给我异常。htmlFileReading是一个HTML文件,带有这些标记和带换行符的文本。我需要把文本放在中间,但它给了我错误。谢谢。这个表达式不会导致StackOverflower错误,您的搜索方法中可能存在某种无休止的递归。你能把它寄出去吗?嗨。这里最重要的建议是不要用正则表达式解析HTML。更多“有用”信息,请参见此处:这不管用吗?顺便说一句,
(.|\\s)+?
+?
相同。请在它不起作用的地方张贴案例。它起作用,但在线程“main”java.lang.StackOverflower中给我异常。htmlFileReading是一个HTML文件,带有这些标记和带换行符的文本。我需要把文本放在中间,但它给了我错误。谢谢。这个表达式不会导致StackOverflower错误,您的搜索方法中可能存在某种无休止的递归。你能把它寄出去吗?嗨。这里最重要的建议是不要用正则表达式解析HTML。请参阅此处了解更多“有用”信息:这是一个包含html的文本文件。这是一个包含html的文本文件。我需要在(.*)获取内容以提取它并使用它。Thanks@RodrigoFerrari实际上,它在标记之间提取数据,如果您只需要中心(.*),则第一个和最后一个。*可能会被抑制。它没有获得中断线:(我需要在(.*)处获取内容)提取并使用它。Thanks@RodrigoFerrari实际上,它在标记之间提取数据,如果您只需要中心(.*),则第一个和最后一个。*可能会被抑制。它没有获得打断线:(