正则表达式:如何匹配URL和其他东西?

时间:2011-12-09 21:02:22

标签: c# regex string parsing text

我挖出了一个正则表达式,它可以识别URL。这是:

Regex regex = new Regex("http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?", RegexOptions.IgnoreCase);

我接下来需要做的是匹配标识的URL和其他字符之间的所有内容,最好是换行符。

  

所以,如果我有一个像这样的文本块...以一个URL结束,就像   它即将到来,我希望整个文本块都消失了。   http://checkoutmysite.com

应该变为空,因为正则表达式会将所有内容向后匹配到最近的换行符,然后全部取出。

我尝试了一两件事似乎无法得到它。

1 个答案:

答案 0 :(得分:2)

  1. 使用逐字字符串@"Regexstring",优点是,您不需要双重转义。所以例如Regex regex = new Regex(@"\w+");没问题。

  2. 字符类中的大多数字符都不需要转义。

    Regex regex = new Regex(@"http://([\w+?.\w+])+([a-zA-Z0-9~!@#$%^&*()_\-=+\\/?.:;',]*)?", RegexOptions.IgnoreCase);
    

    应该与你的相同。

  3. 如果你想在你的正则表达式之前删除某些内容,直到之前的换行符,请先放置.*并在模式前面括号,然后替换为$1

    Regex regex = new Regex(@".*(http://([\w+?.\w+])+([a-zA-Z0-9~!@#$%^&*()_\-=+\\/?.:;',]*)?)", RegexOptions.IgnoreCase);
    

    然后regex.replace$1作为替换字符串。