正则表达式。如何从xml文档中提取值[关闭]
Posted
技术标签:
【中文标题】正则表达式。如何从xml文档中提取值[关闭]【英文标题】:Regexp. How to extract values from xml document [closed] 【发布时间】:2014-01-31 05:40:57 【问题描述】:我才刚刚开始弄明白什么是正则表达式,但我的时间真的很有限!
我在 xml 中有一个字符串,例如:<myid>1234</myid>
,现在我的 xml 在 txt 中,它曾经是一个 xml 文档。
如何制作模式以从 <myid>
标签中提取 1234。
【问题讨论】:
不要,而是使用 XML 解析器。为您的用例编写 XPath 表达式可能很容易。 我会使用 XPath 来获取值。使用正则表达式从 xml 内容中获取值并不是那么漂亮。 我的 xml 文档格式错误。我无法解析它,因为我有 & 标志,而这个 & 标志应该保持不变。 @user3108395:显然它不应该保持不变,它正在创建一个无效的 XML 文档。修复它:str = str.replaceAll("\\&([^a-zA-Z0-9])", "&amp;$1");
或类似的。
但必须如此。因为我发送我的 xml 文档的程序。没有 & 符号不排除它!
【参考方案1】:
如果它真的看起来像这样:
<myid>1234</myid>
...你可以这样提取它:
Matcher match = Pattern.compile("<myid>(\d+)</myid>").matcher(str);
...然后重复使用匹配器,从捕获组中获取值。
但是这是有原因的每个人都在告诉你使用正确的解析器。上述失败的方式有很多,包括不恰当地匹配和在应该匹配时未能匹配。
正确的解决方案是使 XML 有效,然后对其进行解析,并使用 XPath 或类似的方法读取值。
如果您确实有某些工具要求您向其发送无效的 XML,则需要更换该工具。不过,更可能的是,这是一些误解。
【讨论】:
谢谢 T.J.克劳德。我明白,但这就是它的工作原理。以上是关于正则表达式。如何从xml文档中提取值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章