Java正则表达式html解析器

Java正则表达式html解析器,java,regex,Java,Regex,可能重复: 我现在正在学习一些正则表达式,我遇到了这个问题: 所以我有一根像 TAG1 sometext TAG2 sometext TAG3 sometext 我需要得到的是tag语句之间的子字符串。差不多 Tag1 sometext Tag2 some text Tag3 someText 所以我写了这个正则表达式 Pattern pattern = Pattern.compile("TAG\\d.*TAG\\d"); Matcher matcher = pattern.matcher(

可能重复:

我现在正在学习一些正则表达式,我遇到了这个问题:

所以我有一根像 TAG1 sometext TAG2 sometext TAG3 sometext

我需要得到的是tag语句之间的子字符串。差不多

Tag1 sometext
Tag2 some text
Tag3 someText
所以我写了这个正则表达式

Pattern pattern = Pattern.compile("TAG\\d.*TAG\\d");
Matcher matcher = pattern.matcher(string);
while(matcher.find){
    print(matcher.group);
}
但结果是

TAG1 sometext TAG2 some text TAG3 someText
我的理解是,点匹配任何东西,而星将其量化为零或多。因为我相信我的正则表达式的意思是 标记一些数字,然后标记一些其他东西,然后标记一些数字

当我写这篇文章的时候,我也意识到,我并不想要 标签#文本标签# 组合。 例如,我不想要 标签#文本标签#文本标签#

有人能增加我对正则表达式的理解吗

谢谢

编辑--

我不是在用正则表达式编写一个完整的html解析器。不 这是一个html解析项目,我正在使用Jsoup作为它的主要部分。
这个正则表达式只是为了获取一些关于html的元数据,以便我以某种形式将html传递给jsoup。

表达式中没有组。用妄想法把他们分成小组。比如“(TAG\d)(.*)(TAG\d)“我是正则表达式的新手,你可能需要玩你的正则表达式,但至少偏执的部分是最小的。

正则表达式的量词在默认情况下是贪婪的-它们将尽可能匹配,所以
*
匹配以下所有的标记序列。解释如何添加适当的修改器

你可能也会发现它很有用


还有,为什么这个标签是HTML?这似乎不是您要分析的内容。

我尝试了这个,但结果相同。为了学习起见,一个人如何匹配一个“(”呢?无论如何谢谢你的回答。反斜杠或像这样转义((或\\或\n等)但它不起作用?一定是java特定的正则表达式引擎异常…我的意思是可能有其他方法可以做到这一点。您希望只进行一次练习,或者使用正则表达式构建应用程序,因为如果是前者,我可能建议您使用更好的正则表达式工具。如果您不想在输出中看到标记部分,则需要添加一个组:
TAG\d(.*)
,但请参见我关于限制匹配内容的回答。任何时候,如果要将特殊字符作为文本进行匹配,只需添加转义:
\\(
将匹配一个左括号。最重要的是..用regex编写一个完整的HTML解析器是一项非常艰巨的任务。regex的限制将打击你。regex是一把双面剑,请使用HTML解析器,答案如下:啊,你是对的,它不应该被标记为这样的。不过,它是HTML解析项目的一部分,一个我的大脑处于自动导航状态…只是为了回应@Nishant,用正则表达式解析HTML是一项可怕的任务,应该只用于教育目的。我对解析器有很好的经验。