堆栈!
我正在尝试匹配.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之外,它应该匹配。
我正在尝试小写所有文本,但是超链接。 我没有工作的正则表达式。
感谢
答案 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}+
)以获得更好的效果。