我想替换以下 html 文本的一部分(一个大文件的摘录),将旧的论坛格式(由于 2 年前完成的一个非常糟糕的论坛移植工作)更新为常规的 phpBB 格式:
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote"><i>written by User</i>
这应该被过滤成:
[quote=User]
我在 sed 中使用了以下正则表达式
s/<blockquote.*written by \(.*\)<\/i>/[quote=\1]/g
这适用于给定的示例,但在实际文件中,这样的几个引号可以在一行中。在那种情况下,sed 太贪心了,将第一个和最后一个匹配项之间的所有内容都放在 [quote=...] 标记中。我似乎无法让它替换行中这种模式的每一次出现......(我认为没有任何嵌套引号,但这会使它变得更加困难)