【问题标题】:Unable to parse rectangle bracket无法解析方括号
【发布时间】:2019-09-23 09:08:18
【问题描述】:

我在实现 xpath 逻辑时遇到问题。如果我得到如下示例的结果,我正在尝试解析:

//html:h1/span[1]

每当出现方括号时,我都想在这个字符串之前加上:html,如下所示:

//html:h1/html:span[1]

如果我的例子是:

//html:h1/span/div

这里没有方括号,所以我想让我的字符串保持原样。

这是另一个例子:

//html:div/span[5]/div/span

我想要如下示例的预期输出:

//html:div/html:span[5]/div/span

我已经尝试通过正则表达式进行谷歌搜索和解析,但无法找到完全匹配的解决方案。

已编辑:

澄清一下,它不仅仅是span 标签。可以是 ap 或其他 html 标签

一些场景:

//html:div[@id='ins_storybody']/p[2]

预期的输出应该是:

//html:div[@id='ins_storybody']/html:p[2]

这是另一种情况:

//html:div[@id='ins_storybody']/p[2]/div/span/li[@id='ins_storybody']

预期输出:

//html:div[@id='ins_storybody']/html:p[2]/div/span/li[@id='ins_storybody']

我想出了一种方法,可以使用正则表达式:match(/\[.@?\]/g),但无法获取带有方括号的附加字符串,以便我可以替换它。有什么建议吗?

【问题讨论】:

  • 你们能否分享现有的答案链接(如果存在)?我找不到这就是我在这里发帖的原因。 :(

标签: javascript html regex xpath escaping


【解决方案1】:

我不确定你想要实现什么,但是下面的代码检查输入字符串中是否有任何[,如果是这样,它会在span之前插入html: .请注意,如果输入字符串中没有span,这将不起作用。

str = '//html:h1/span[1]';

q = str.includes('[');

if (q) {
	i = str.indexOf('span');
	newstr = str.slice(0,i) + 'html:' + str.slice(i);
} else {
	newstr = str;
}

console.log(newstr)

【讨论】:

  • 谢谢@rob-teeuwen 我非常感谢你的回答,但是当我尝试这个字符串//html:div[@id='ins_storybody']/p[2] 时它失败了://html:div[@id='ins_storybody']/p[2html:] 我想要下面的输出示例://html:div[@id='ins_storybody']/html:p[2]跨度>
  • 另外,它可以是任何东西,而不仅仅是span.. 谢谢你的建议。我真的很感激..
  • 在您的示例中,您只想在“span”之前插入“html:”。如果还有没有“span”的字符串,我不可能弄清楚“html:”应该去哪里。我已经在回答中说过,如果您的字符串中没有“跨度”,它将无法工作。请更好地说明您的问题。应该清楚您要做什么。
  • 谢谢。更新了我的问题。如果我遗漏了什么,请告诉我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多