Regex: как сопоставить URL и что-то еще? - PullRequest
1 голос
/ 10 декабря 2011

Я выкопал регулярное выражение, которое делает трюк, когда дело доходит до определения URL.Вот что это:

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

Что мне нужно сделать дальше, это сопоставить все между идентифицированным URL и каким-либо другим символом, предпочтительно символом новой строки.

Так что еслиУ меня был такой блок текста, который закончился URL-адресом, как будто вот-вот, я хочу, чтобы весь блок текста исчез.http://checkoutmysite.com.

должен превратиться в ничто, поскольку регулярное выражение будет сопоставлять все в обратном направлении с ближайшим символом новой строки, а затем выводит все это.кажется, не понял.

1 Ответ

2 голосов
/ 10 декабря 2011
  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 в качестве замещающей строки.

...