我正在尝试编写一个替换markdown样式链接的正则表达式,但它似乎不起作用。 这是我到目前为止:

# ruby code:
text = "[link me up](http://www.example.com)"
text.gsub!(%r{\[(\+)\]\((\+)\)}x, %{<a target="_blank" href="\\1">\\2</a>})

我究竟做错了什么?

===============>>#1 票数:39 已采纳

irb(main):001:0> text = "[link me up](http://www.example.com)"
irb(main):002:0> text.gsub /\[([^\]]+)\]\(([^)]+)\)/, '<a href="\2">\1</a>'
#=> "<a href=\"http://www.example.com\">link me up</a>"

我们可以使用Ruby的正则表达式的e x标题选项使它看起来不像是跳到键盘上的猫:

def linkup( str )
  str.gsub %r{
    \[         # Literal opening bracket
      (        # Capture what we find in here
        [^\]]+ # One or more characters other than close bracket
      )        # Stop capturing
    \]         # Literal closing bracket
    \(         # Literal opening parenthesis
      (        # Capture what we find in here
        [^)]+  # One or more characters other than close parenthesis
      )        # Stop capturing
    \)         # Literal closing parenthesis
  }x, '<a href="\2">\1</a>'
end

text = "[link me up](http://www.example.com)"
puts linkup(text)
#=> <a href="http://www.example.com">link me up</a>

请注意,对于其中包含右括号的URL,上述操作将失败,例如

linkup "[O](http://msdn.microsoft.com/en-us/library/ms533050(v=vs.85).aspx)"
# <a href="http://msdn.microsoft.com/en-us/library/ms533050(v=vs.85">O</a>.aspx)

如果这对你很重要,你替换[^)]+\\S+(?=\\))这意味着“找到尽可能多的非空白字符,你可以,但要确保有一个)继”。


要回答你的问题“我做错了什么 ,这就是你的正则表达式所说的:

%r{
  \[      # Literal opening bracket   (good)
    (     # Start capturing           (good)
      \+  # A literal plus character  (OOPS)
    )     # Stop capturing            (good)
  \]      # Literal closing bracket   (good)
  \(      # Literal opening paren     (good)
    (     # Start capturing           (good)
      \+  # A literal plus character  (OOPS)
    )     # Stop capturing            (good)
  \)      # Literal closing paren     (good)
}x

  ask by Andrew translate from so

未解决问题?本站智能推荐:

2回复

将github风格的markdown正则表达式从ruby转换为python

我正在尝试实现在python中工作的github风格markdown的实现,但没有运气...我的正则表达式技能没有太多帮助。 这是来自github的ruby代码: 到目前为止,这是我在python 2.5中提出的内容: 似乎根本没有任何作用:-/ 如果有人能用 pyt
2回复

正则表达式Markdown标头

我正在尝试创建一个检查多个条件的正则(红宝石)表达式。 我使用此正则表达式替换对象的内容。 我的正则表达式快要完成了,除了我在减价方面面临的两个问题。 首先,标题给我带来麻烦。 例如,如果标题中包含“ Hi”,我不想将“ Hello”一词替换为“ Hello”。 文字:嗨
1回复

正则表达式封装全行并将其包围

我可以找到围绕一条线的示例,但没有找到围绕并替换的示例,而Regex有点新。 我正在尝试简化我的降价促销,所以我不需要添加html只是为了使其居中。 使用pandoc时,我显然需要用DIV标签环绕并成像,以使其居中,正确对齐或任何其他方式。 我不想每次都键入它,而是想使用rub
4回复

用Ruby替换部分正则表达式匹配

我想转换以下文字 成 换句话说,我想找到括在括号中的所有图像路径(文本采用Markdown语法),并用其他路径替换它们。 包含新路径的字符串由单独的real_path函数返回。 我想在它的块版本中使用String#gsub来做这件事。 目前我的代码如下所示: 这
2回复

Ruby正则表达式将星号/下划线表示为强/ em?

作为我正在编写的聊天应用程序的一部分,我需要使用正则表达式来匹配聊天消息中的星号和下划线,并将它们转换为<strong>和<em>标记。 由于我对正则表达式感到很糟糕,所以我真的被困在这里。 理想情况下,我们将其设置为: 可以将一到三个字(但不能更多)标记为
2回复

Ruby gsub转换为PHP。 改变降价行为

我正在尝试更改Markdown的默认行为,即单行中断不会转换为<br /> 。 我发现github风格的markdown可以做到这一点,但是我很难将rube gsub函数转换为PHP中的类似函数。 Ruby代码如下所示: 但是即使我尝试在PHP中使用这种简单的方法
2回复

如何使用gsub在Ruby中提取和替换?

我在几个文件中有一堆markdown图像路径,我想更改根目录。 图像标记的正则表达式如下: 我需要能够抓取组,解析文件名并给它一个新的路径,然后将其返回到gsub进行替换。 例如,我想找到这样的所有字符串: 并将它们转换为: 我知道我可以在一个gsub块中做到这一
2回复

使用Jekyll渲染后如何在HTML文件中添加一些类

我使用Jekyll,我需要在将Markdown渲染为HTML后在HTML标记中添加类。 我可以使用jQuery或简单的JavaScript来完成这项任务,但我想了解钩子如何与Jekyll一起工作。 我在Gemfile中写了这个: 一个集合中只有几页受此影响:我该怎么办?
2回复

正则表达式使用C#将Markdown内联链接转换为HTML链接

我在C#中编写一个非常基本的Markdown到HTML转换器。 我设法编写了正则表达式来转换粗体和斜体文本,但是我正努力提出一个正则表达式,可以将markdown链接转换为html中的链接标记。 例如: 应该成为 到目前为止,这是我的代码: 什么样的正则表达式
1回复

如何使用正则表达式查找所有Markdown链接?

在Markdown中,有两种放置链接的方法,一种是只键入原始链接,例如: http://example.com : http://example.com ,另一种是使用()[]语法: (Stack Overflow)[ http://example.com ] 。 我正在尝试编写一个可以同