我需要从输入文件中解析一些字符串。Hadoop 中需要这些字符串。问题是,这些字符串在标记标签中。
有人可以建议我一个模式,以匹配和存储它们
<id>INIcE89C561</id> <id>INIcE89C560</id> <id>Q1S5WLipQW2</id>
我需要 id 标签之间的字符串。所有标签都来自不同的输入文件。我需要将它们用作价值。在键值对中。
我需要从输入文件中解析一些字符串。Hadoop 中需要这些字符串。问题是,这些字符串在标记标签中。
有人可以建议我一个模式,以匹配和存储它们
<id>INIcE89C561</id> <id>INIcE89C560</id> <id>Q1S5WLipQW2</id>
我需要 id 标签之间的字符串。所有标签都来自不同的输入文件。我需要将它们用作价值。在键值对中。
要获取 id 标签之间的文本,您可以使用以下内容:
<id>([^<]*)</id>
然后提取第一个捕获的组(这是您的值)。
然而,一般来说,正则表达式并不是解析 XML 的最佳选择。
我推荐使用更适合的 XML 解析器。
例如看一下本教程。
你可以尝试使用类似这样的东西:<id>(.*?)</id>
. 这应该匹配<id>
和</id>
标签之间的所有字符。但问题可能是正则表达式捕获的文本组很可能会被正则表达式捕获的下一组文本覆盖,这意味着到一天结束时,您将只有最后一组匹配的文本。
我建议您首先将这些按空格字符拆分(假设您获得的文本与您作为示例发布的文本相同),然后将正则表达式应用于各个块。此外,如果有比这更多的标签,我建议您使用其他方式来提取您的信息,因为正则表达式并非完全设计用于从标记语言中提取信息。