【问题标题】:Combine JavaScript regex [duplicate]结合 JavaScript 正则表达式 [重复]
【发布时间】:2015-10-16 18:57:05
【问题描述】:

我有 XML 节点字符串(不是 XML 文件),我正在使用下面的正则表达式,它返回返回数组。我正在寻找一个正则表达式,它应该将返回作为单个结果字符串返回为:'SUSTED'(SU - 来自'abc' 节点和来自'xy' 节点的STED)。你能帮我解决这个问题吗?

Regex: /<abc>(.*)<\/abc><xy>>(.*)<\/xy>/i
XML String: some junk string not useful so would like to ignore this. param :<root><abc>SU</abc><ab>SDD</ab><xy>STED</xy></root>
some more junk strings, so need to ignore this too...

【问题讨论】:

  • 哪两个节点?正则表达式适用于简单有效的非嵌套 xml,即使嵌套但不重复标记也可以。
  • 只需解析 XML (DOMParser),然后通过 DOM 调用或 evaluate 提取您想要的信息。
  • @torazaburo - 不,我无法使用 domParser 操作它,因为我的字符串也有其他字符串 + xml 字符串。所以我正在寻找一个正则表达式。所以理论上正则表达式应该是 - 获取字符串之间的值(Value1Value2)并返回组合结果
  • 我无法理解您所说的“我的字符串也有其他字符串 + xml 字符串”是什么意思。你能在你的问题中添加这样一个字符串的例子吗?
  • 嘿 @torazaburo 其他字符串 + xml 字符串的意思是:一些垃圾字符串没有用,所以想忽略这个。 param :SUSDDSTED 还有一些垃圾字符串,所以也需要忽略这个

标签: javascript regex


【解决方案1】:

解析字符串:

var xml = '<root><abc>SU</abc><ab>SDD</ab><xy>STED</xy></root>';
var parser = new DOMParser();
var doc = parser.parseFromString(xml, "application/xml");

现在用doc做任何你想做的事:

var extracted = doc.querySelector('abc').textContent + doc.querySelector('xy').textContent;

> "SUSTED"

不要使用正则表达式来解析 XML。你会后悔的。 XML 不是字符串;它是一种有时恰好由字符串表示的结构。

【讨论】:

  • 我看起来像@alan-moore stackoverflow.com/questions/869809/combine-regexp,但它是匹配的,但它说不捕获组。住在这里regex101.com/r/qS7yN9/4
  • 当我的整个答案都是错误的解决方案时,您为什么要请求有关正则表达式解决方案的帮助?如果你需要提取一些XML,那么先提取它,然后再解析它。
  • 这用于持续查看。但我不能使用你的解决方案,基本上我收到了来自第 3 方的字符的垃圾,我必须得到以上节点 + xml 中没有的更多细节。如果我使用您的解决方案,它只会进行节点值提取,而对于其他细节,我必须使用其他解决方案。所以,我认为,正则表达式是提取其他细节 + 节点值提取的好解决方案。此外,我通过节点收到的值是作为计划字符出现的。我希望这能回答你的问题。
猜你喜欢
  • 1970-01-01
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2017-10-07
  • 1970-01-01
相关资源
最近更新 更多