【问题标题】:Changing regexes to target image links将正则表达式更改为目标图像链接
【发布时间】:2014-04-09 12:04:01
【问题描述】:

我需要批量更改一个包含文件的文件夹,将所有图像链接更改为小写并用破折号替换下划线。因此,<img src="/images/Maps/South_America.png"> 将变为 <img src="images/maps/south-america.png">

我已经对同一文件中的所有本地链接执行了类似的操作。我使用这个正则表达式将它们更改为小写:

(?<=(?i)href=")((?:<\?php(?:(?!\?>).)+\?>)?)((?:'[^']+')?)([^"]+)(?=")

\1\2\L\3

我用这个来用破折号代替下划线:

(href="(?!http)[^_"]+)\_([^"]+")

$1-$2

我什至不确定它们是否是同一种“语言”;我认为一个只适用于 Dreamweaver,另一个适用于 TextWrangler。无论如何,我还没有想出如何修改以匹配图像,而不是链接。我要强调的是,我只更改图像路径和名称,而不是任何类、ID 或 alt 标签。

例如,&lt;img src="Buffalo_Bill.jpg" alt="Buffalo Bill" class="People"&gt; 将变为 &lt;img src="buffalo-bill.jpg" alt="Buffalo Bill" class="People"&gt;

另外,如果需要定义图像扩展,我认为这涵盖了所有基础......

(?:jpe?g|gif|png|svg|swf)

我在上面发布的正则表达式只是示例。如果您有一个完全不同的正则表达式,那很好 - 只要它可以在 Dreamweaver 或 TextWrangler 等通用文本编辑器中工作。 (我在 Mac 上。)

【问题讨论】:

  • 您能否修复您的图像或在文本中粘贴“从”到“到”的示例?
  • 很抱歉;我想有人为我修好了它们。 ;)
  • 所以你正试图让你的第二个匹配/替换文件名的正则表达式只影响图像?
  • 是的,我已经将所有链接转换为小写,并用破折号替换了下划线。现在我想对我的图像做同样的事情。

标签: regex


【解决方案1】:

使用这样的输入:

<img id="BoringSnowDay" class="FunkySmellsFromGarden" src="/images/Maps/South_America.png" alt="Powerball Winner!" /> <img id="ExcitingSunNight" class="SmoothTasteInKitchen" src="/images/Flags/Antartica.jpg" alt="Racecar racecaR!" />

TextWrangler 中的这个正则表达式:

(<img [^>]+)(src="[^"]+")

替换:

\1\L\2

给我的东西只会影响src="..." 部分,不会影响其他任何东西。

不幸的是,将其与“...并将_ 替换为-”结合起来会有点棘手。

【讨论】:

  • 是的,我可能需要两个单独的正则表达式来完成这项工作,就像 URL 更改一样。
  • 我还没有看到任何好的 pcre 正则表达式可以让你在一个小区域内替换字符(比如在src="..." 标签之间),但是如果你想多次运行:(?&lt;=src=")([^"]+)_([^"]+)(?=") 并替换用这个:\L\1-\L\2,它既可以降低大小写,也可以用破折号替换你的下划线。
  • 太棒了;第一个根本不起作用,但第二个钉了它。 ;)
猜你喜欢
  • 2013-09-09
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-12
  • 2013-04-27
相关资源
最近更新 更多