如何使用正则表达式将双引号替换为字符串内的单引号?

时间:2019-03-31 22:31:45

标签: regex xml xpath

我有一个页面,其中包含//script[@data-type="application/ld+json"]

此脚本的内容与以下内容相似。

<script>
{
  "one": "some text here",
  "two": "some "other" text here"
}
</script>

是否可以使用正则表达式将双引号替换为单引号,所以我有:

"two": "some 'other' text here"

或者只是完全删除内部引号

我可以使用replace函数

主要问题是我不知道如何只匹配字符串中的引号。

2 个答案:

答案 0 :(得分:4)

通常,由于您的内容含糊不清,因此无法完成。考虑:

{
  "one": "some text here",
  "two": "some ", "three": " text here"
}

您必须采用一些规则,例如说如果在"some之后的,之后的}被当作终端引号(可以在前面加上空格) ),否则将其用作嵌套字符串的起始引号。这种逻辑似乎远远超出了您在正则表达式中可以表达的逻辑。而且在任何情况下,有时都会给您错误的答案。

答案 1 :(得分:0)

如果是这样,也许您应该尝试使用以下正则表达式。

"(?=\w+"| )(?!\w+":)

我没有您的全部范围,我只是根据您在此处输入的模式写的。

您可以在Sublime或https://regexr.com/

上测试正则表达式