关于取一段字符串中的一段xml的问题?

Blockly.Blocks['kjh'] = {
  init: function() {
    this.appendDummyInput().appendField('kjh');
    this.setOutput(true, null);
    this.setColour(164);
    this.setTooltip('');
    this.setHelpUrl('');
  }
};
Blockly.JavaScript['kjh'] = function(block) {
      var code = 'gdfnh';
      return [code, Blockly.JavaScript.ORDER_NONE];
}
<xml xmlns="http://www.w3.org/1999/xhtml">
    <block type="variables_get" id="EaezE9)%*e^B{Olq7?Le" x="147" y="34"></block>
</xml>

请问如何取这段字符串中的xml部分?
非常感谢!

阅读 2.6k
1 个回答

遇到这种我的一般做法是利用replace+正则来提取。

var t = `Blockly.Blocks['kjh'] = {
  init: function() {
    this.appendDummyInput().appendField('kjh');
    this.setOutput(true, null);
    this.setColour(164);
    this.setTooltip('');
    this.setHelpUrl('');
  }
};
Blockly.JavaScript['kjh'] = function(block) {
      var code = 'gdfnh';
      return [code, Blockly.JavaScript.ORDER_NONE];
}
<xml xmlns="http://www.w3.org/1999/xhtml">
    <block type="variables_get" id="EaezE9)%*e^B{Olq7?Le" x="147" y="34"></block>
</xml>`;

var res;

t.replace(/<xml[^<>]+>[\s\S]*?<\/xml>/,function(e){
    res = e;
    return e
});

正则规则我没考虑那么多,同样从题主之前采纳的问题答案里找的参考的 https://segmentfault.com/q/10...
(ps:问题大多都一样,建议题主尝试举一反三)。

这里主要一个正则是关于这段文本如果有回车换行的情况,直接用.*并不能直接匹配,但可用[\s\S]*代替

推荐问题
宣传栏