正则表达式匹配.NET的所有超链接

时间:2016-05-18 13:13:50

标签: .net regex

堆栈!

我正在尝试匹配.NET中的所有文本但超链接。我找到了一个关于它的线程,但它不适用于.NET - > Regular expression to match a line that doesn't contain a word?

示例性:

Text text 123 123 timi other text http://www.stack.com asd asd sadokaspodkas

除了http://www.stack.com之外,它应该匹配。

我正在尝试小写所有文本,但是超链接。 我没有工作的正则表达式。

感谢

1 个答案:

答案 0 :(得分:1)

您可以匹配超链接,并将其捕获到组1中,然后匹配任何大写字母以将其大小写更低。在Regex.Replace方法中,实现匹配评估程序以检查组1是否匹配,并相应地替换。

Regex.Replace(input, @"(https?://\S+\b)|\p{Lu}", 
                m => m.Groups[1].Success ? 
                   m.Groups[1].Value : m.Value.ToLower()
             )

(https?://\S+\b)正则表达式相当粗糙,有很多URL正则表达式模式,选择最适合你的模式。

\p{Lu}匹配单个大写字母(包括所有Unicode大写字母)。如果您的链接无法以HTTP开头,则可以在其后添加+\p{Lu}+)以获得更好的效果。