3

我今天感觉特别挑剔。我正在处理一些 HTML 文档,这些文档通过文档在所有属性值周围都有单引号,如下所示:

<div class='classone classtwo'>

我希望能够在每个文档中进行查找和替换并用双引号替换,如下所示:

<div class="classone classtwo">

文档中的许多元素将具有多个属性:

<div class='classone classtwo' data-scripts='lazyload'>

有些会有正确的双引号:

<div class='classone classtwo' data-scripts="lazyload">

用双引号替换所有单引号包装值的最佳方法是什么?

4

3 回答 3

5

做一个“替换”操作,我可能会尝试这样简单的事情:

查找内容:      =\s*'(.*?)'
替换为: ="$1"

确保启用正则表达式切换按钮 ( .*)

在 SublimeText2 中这样做的好处是它会在你执行替换之前立即显示哪些部分将被匹配。所以正则表达式不必是完全证明的。

于 2012-11-14T17:48:35.260 回答
0

在 Ruby 中,我会使用该正则表达式:

ruby-1.9.2-p290 :001 > s = "<div class='classone classtwo' data-scripts='lazyload'>"
 => "<div class='classone classtwo' data-scripts='lazyload'>" 
s.gsub(/=\s?'([^']+)'/,"=\"#{$1}\"")
=> "<div class=\"lazyload\" data-scripts=\"lazyload\">"

这一切都归结为捕获两个''中的所有内容:

'([^'])'

并使用“”返回捕获的匹配项。

于 2012-11-14T17:36:19.793 回答
0

如果除标签之外的其他任何地方都没有单引号,并且您想全部替换它们,那么这会更快:

突出显示文档中任何位置的任何单引号。

Alt+ F3

键入一个"

于 2012-11-16T20:12:14.603 回答