正则表达式。如何从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])", "&$1"); 或类似的。 但必须如此。因为我发送我的 xml 文档的程序。没有 & 符号不排除它! 【参考方案1】:

如果它真的看起来像这样:

<myid>1234</myid>

...你可以这样提取它:

Matcher match = Pattern.compile("<myid>(\d+)</myid>").matcher(str);

...然后重复使用匹配器,从捕获组中获取值。

但是这是有原因的每个人都在告诉你使用正确的解析器。上述失败的方式有很多,包括不恰当地匹配和在应该匹配时未能匹配。

正确的解决方案是使 XML 有效,然后对其进行解析,并使用 XPath 或类似的方法读取值。

如果您确实有某些工具要求您向其发送无效的 XML,则需要更换该工具。不过,更可能的是,这是一些误解。

【讨论】:

谢谢 T.J.克劳德。我明白,但这就是它的工作原理。

以上是关于正则表达式。如何从xml文档中提取值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从字符串正则表达式 PHP 中提取数值 [关闭]

从字符串中提取分数、小数和数字的正则表达式[关闭]

使用正则表达式从对象中检索值 - JS [关闭]

如何使用正则表达式和外壳从字符串中提取值?

如何从正则表达式中提取多个值?

如何使用正则表达式从引号之间提取包含所需字符串的组? [关闭]