Regex 使用 C# 将 Markdown 内联 link 转换为 HTML link
Regex convert a Markdown inline link into an HTML link with C#
我正在用 C# 编写一个非常基本的 Markdown 到 HTML 转换器。
我设法编写了正则表达式来转换粗体和斜体文本,但我正在努力想出一个可以将 markdown link 转换为 link 标签的正则表达式html.
例如:
This is a [link](/url)
应该变成
This is a <a href='/url'>link</a>
到目前为止,这是我的代码:
var bold = new Regex(@"(\*\*|__) (?=\S) (.+?[*_]*) (?<=\S) ", // Regex for bold text
RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline | RegexOptions.Compiled);
var italic = new Regex(@"(\*|_) (?=\S) (.+?) (?<=\S) ", // 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></b>");
content = italic.Replace(content, @"<i></i>");
content = anchor.Replace(content, @"<a href=''></a>");
什么样的正则表达式可以做到这一点?
尝试替换这个
\[(.+)\]\((\/.+)\)
有了这个:
<a href=''></a>
在markdown中可能有两种方式url:
[sample link](http://example.com/)
[sample link](http://example.com/ "with title")
Addison 展示的解决方案中的正则表达式仅适用于第一种类型,并且仅适用于 url 以 /
开头的类型。例如 [link name]( "link to this question")
不会工作
这里的正则表达式在这两个地方都有效
\[([^]]*)\]\(([^\s^\)]*)[\s\)]
我正在用 C# 编写一个非常基本的 Markdown 到 HTML 转换器。
我设法编写了正则表达式来转换粗体和斜体文本,但我正在努力想出一个可以将 markdown link 转换为 link 标签的正则表达式html.
例如:
This is a [link](/url)
应该变成
This is a <a href='/url'>link</a>
到目前为止,这是我的代码:
var bold = new Regex(@"(\*\*|__) (?=\S) (.+?[*_]*) (?<=\S) ", // Regex for bold text
RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline | RegexOptions.Compiled);
var italic = new Regex(@"(\*|_) (?=\S) (.+?) (?<=\S) ", // 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></b>");
content = italic.Replace(content, @"<i></i>");
content = anchor.Replace(content, @"<a href=''></a>");
什么样的正则表达式可以做到这一点?
尝试替换这个
\[(.+)\]\((\/.+)\)
有了这个:
<a href=''></a>
在markdown中可能有两种方式url:
[sample link](http://example.com/)
[sample link](http://example.com/ "with title")
Addison 展示的解决方案中的正则表达式仅适用于第一种类型,并且仅适用于 url 以 /
开头的类型。例如 [link name](
不会工作
这里的正则表达式在这两个地方都有效
\[([^]]*)\]\(([^\s^\)]*)[\s\)]