匹配标签内的内容

时间:2012-04-30 05:35:07

标签: java regex pattern-matching

我需要从输入文件中解析一些字符串。 Hadoop中需要这些字符串。 问题是,这些字符串在标记标记中。

有人可以建议我一个模式,匹配并存储它们

<id>INIcE89C561</id>  <id>INIcE89C560</id>  <id>Q1S5WLipQW2</id>

我需要id标签之间的字符串。所有标签都来自不同的输入文件。 我需要将它们用作价值。在键值对中。

2 个答案:

答案 0 :(得分:3)

要获取id标记之间的文本,您可以使用以下内容:

<id>([^<]*)</id>

然后提取第一个捕获的组(这是您的值)。

但是,一般而言,正则表达式不是解析XML的最佳选择。

我建议使用更好的XML解析器。

例如,查看this教程。

答案 1 :(得分:0)

您可以尝试使用类似的内容:<id>(.*?)</id>。这应匹配<id></id>标记之间的所有字符。问题虽然可能是正则表达式捕获的文本组很可能被正则表达式捕获的下一组文本覆盖,这意味着在一天结束时,您将只有最后一组匹配的文本。

我建议你做的是首先用空格字符分割它们(假设你得到的是你发布的相同文本作为例子),然后在各个块上应用正则表达式。此外,如果有更多的标签,我会建议您使用其他一些方法来提取您的信息,因为正则表达式并非完全用于从标记语言中提取信息。