使用正则表达式将格式化的字符串拆分为StackOverFlow等URL

时间:2014-03-26 18:48:07

标签: c# regex

我试图编写一个解析器来创建在发布文本中找到的链接,这些链接的格式如下:

[Site Description](http://www.stackoverflow.com)

将呈现为标准HTML链接,如下所示:

<a href="http://www.stackoverflow.com">Site Description</a>

到目前为止,我所拥有的是下面列出的表达式,并将在上面的示例中使用,但如果URL在&#34; .com&#34;之后有任何内容,则无效。显然,没有单一的正则表达式可以找到每个URL,但希望能够尽可能多地匹配。

(\[)([A-Za-z0-9 -_]*)(\])(\()((http|https|ftp)\://[A-Za-z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?)(\))

非常感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:1)

那么,您可以尝试使用否定类,这样您就不必担心解析url本身了吗?

\[([^]]+)\]\(([^)]+)\)

并替换为:

<a href="$2">$1</a>

regex101 demo

或者也许只使用开头部分来识别网址?

\[([^]]+)\]\(((?:https?|ftp)://[^)]+)\)

替换是一样的。

答案 1 :(得分:1)

织补。看来@Jerry和@MikeH打败了我。但是,我的答案最好,因为链接标记都是大写的;)

找到:\[([^]]+)\]\(([^)]+)\)

替换为:<A HREF="$2">$1</A>

http://regex101.com/r/cY7lF0