【问题标题】:Regex encapsulate full line and surround it正则表达式封装整行并将其包围
【发布时间】:2014-09-07 01:10:05
【问题描述】:

我可以找到包围一条线但不能包围和替换的示例,而且我对 Regex 有点陌生。

我正在尝试减轻我的降价,这样我就不需要添加 html 来使其居中图像。

使用 pandoc,我显然需要用 DIV 标签包围和成像,以使其居中、右对齐或其他。

我不想每次都输入,我只想用 ruby​​ 脚本预处理我的 markdown,并让 ruby​​ 为我添加到 DIV 中。

所以我可以输入:

center![](image.jpg)

然后运行一个 ruby​​ 脚本,将其更改为

<div class="center">
![](image.jpg)
</div>

我希望正则表达式找到“中心!”去掉“中心”这个词,用DIV标签包围其余的词。

我将如何做到这一点?

【问题讨论】:

  • 您可能还想看看 johnmacfarlane.net/pandoc/scripting.html 但也许更好:为什么不将 CSS 应用于所有图像而不是仅应用于 img.center
  • 我可能想要一些居中,一些左,一些右,但我找不到如何将类名传递给与 pandoc 一起使用的 markdown 中的图像。此外,如果我让它工作,我也可以为其他类型的东西做很多降价定制。不过我是新手,也许我正在重新发明一个轮子。
  • 是的,不幸的是图像在 Pandoc 中还没有属性(如类名)。有一个开放的issue on that

标签: ruby regex markdown pandoc


【解决方案1】:

一个使用gsub的小例子:

s = "a\ncenter![](image.jpg)\nb\n"
puts s.gsub(/^center(.*)$/, "<div class=\"center\">\n\\1\n</div>")

结果是:

a
<div class="center">
![](image.jpg)
</div>
b

应该让你开始。 (.*) 捕获中心后的内容,\\1 将其添加回替换中。在此示例中,我假设项目本身位于一行 - ^ 表示一行的开头,$ 表示一行的结尾。如果不是这种情况,您需要确定是什么让您的正则表达式独一无二,这样它就不会替换文本中任何随机使用的“中心”。

【讨论】:

  • 是的,可能总是在一开始就在自己的行上。我想这正是我想要的。也许我可以让它更通用并做左!,右!,中心!然后用之前的词!作为 div 的类(左、右、中)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
  • 2011-11-26
相关资源
最近更新 更多