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

toc*_*lle 1 c# regex markdown

我正在用C#编写一个非常基本的Markdown到HTML转换器.

我设法编写正则表达式来转换粗体和斜体文本,但我正在努力想出一个正则表达式,它可以将markdown链接转换为html中的链接标记.

例如:

This is a [link](/url) 
Run Code Online (Sandbox Code Playgroud)

应该成为

This is a <a href='/url'>link</a>
Run Code Online (Sandbox Code Playgroud)

到目前为止这是我的代码:

var bold = new Regex(@"(\*\*|__) (?=\S) (.+?[*_]*) (?<=\S) \1", // Regex for bold text
        RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline | RegexOptions.Compiled);
var italic = new Regex(@"(\*|_) (?=\S) (.+?) (?<=\S) \1", // Regex for italic text
        RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline | RegexOptions.Compiled);
var anchor = new Regex(@"??????????", // Regex for hyperlink text
        RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled);

content = bold.Replace(content, @"<b>$2</b>");
content = italic.Replace(content, @"<i>$2</i>");
content = anchor.Replace(content, @"<a href='$3'>$2</a>");
Run Code Online (Sandbox Code Playgroud)

什么样的正则表达式可以实现这一目标?

Mis*_*akw 8

在markdown中可能有两种url方式:

[sample link](http://example.com/)
[sample link](http://example.com/ "with title")
Run Code Online (Sandbox Code Playgroud)

来自Addison显示的解决方案的正则表达式仅适用于第一种类型,并且仅适用于以#开头的URL /.例如,[link name](http://stackoverflow.com/questions/40177342/regex-convert-a-markdown-inline-link-into-an-html-link-with-c-sharp "link to this question")不会工作

这里正在使用正则表达式

\[([^]]*)\]\(([^\s^\)]*)[\s\)]
Run Code Online (Sandbox Code Playgroud)

https://regex101.com/r/kZbw7g/1


Add*_*son 5

尝试更换这个

\[(.+)\]\((\/.+)\)
Run Code Online (Sandbox Code Playgroud)

有了这个:

<a href='\2'>\1</a>
Run Code Online (Sandbox Code Playgroud)

示例:https : //regex101.com/r/ur35s8/2