0

Как из такого кода:<a href="thumbnails.php?album=10"> выдернуть часть между кавычками, то есть эту часть: thumbnails.php?album=10 ? Вот мой код:

var matches = Regex.Matches(content , "<a\\href=\"(.+?)");
var result = matches[0].Groups[1];

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

Вот новый код выдергивает все но только с лишними данными типа начало и конца которых не надо сохранять:

var matches = Regex.Matches(content , "<a.+href=\"(.+?)\"");

var sb = new StringBuilder();
foreach (Match m in matches)
    if (!string.IsNullOrWhiteSpace(m.Value))
        sb.AppendLine(m.Value.Trim());

lock (this.lockValid)
    this.valid++;

File.AppendAllText("Links.txt" , sb.ToString());

На выходе:

<a href="index.php?menu=exp&amp;mid=242&amp;s=6f7b7a8a0c8667e168bfd186b332e7ed"
<a href="/index.php?s=6f7b7a8a0c8667e168bfd186b332e7ed"

Как можно исключить лишние данные типа: <a href=" и " еще как то исключить бы эту часть тоже:

&amp;mid=242&amp;s=6f7b7a8a0c8667e168bfd186b332e7ed"

Как можно решить это?

Nicolas Chabanovsky
  • 51,426
  • 87
  • 267
  • 507

1 Answers1

1

Попробуйте следующий код:

string content = "<a title=\"t\" href=\"thumbnails.php?album=10\"></a><a href=\"s2\"></a>";
var matches = Regex.Matches(content, "<a.+?href=\"(.+?)\"");
foreach (Match m in matches)
    Console.WriteLine(m.Groups[1]);

EDIT
Код изменен для нахождения всех ссылок в строке.

Dmitry D.
  • 3,136
  • не совсем то, еще какие варианты? – GeneratorSveta Sep 11 '15 at 11:44
  • @GeneratorSveta почему именно "не совсем то"? в результате выполнения в переменной result содержится как раз то, а именно, цитирую: часть между кавычками. – Dmitry D. Sep 11 '15 at 11:48
  • @GeneratorSveta, надо смотреть оригинальную разметку. Возможно нужно воспользоваться дополнительными опциями Regex, такими как RegexOptions.IgnoreCase | RegexOptions.Singleline – Alexis Sep 11 '15 at 12:26
  • Например вот мой старый вопрос там есть пример: http://ru.stackoverflow.com/questions/445273/Не-получается-разобраться-с-регуляркой-по-c , я как раз и пытался подогнать под этот вопрос код который давали на той теме, точнее не сам код а регулярку от туда но не вышло, с вашим проверял пытался подогнать чет он вообще другое то что не нужно парсит, может оибка какая сами проверяли? этот код: '' из html страницы если что, хотя щас может сам ошибся проверю еще раз попробую... – GeneratorSveta Sep 11 '15 at 12:37
  • такс да работает разобрался почти но выдергивает только первый попавшийся а не все что есть на странице, как это исправить можно? – GeneratorSveta Sep 11 '15 at 13:27
  • @GeneratorSveta исправил. – Dmitry D. Sep 11 '15 at 13:57
  • ок спс щас попробую... – GeneratorSveta Sep 11 '15 at 14:08
  • у вас под консоль подогнано а вот под дектоп как преобразовать посоветует? например вот так не получится: var matches = Regex.Matches(content , "<a.+?href="(.+?)""); foreach (Match m in matches) Console.WriteLine(m.Groups[1]);
                                StreamWriter writer2 = new StreamWriter("Links.txt" , true);
                                writer2.WriteLine(m.Groups[1]);
                                writer2.Close(); если преобразовать в строковую переменную то так же пишется первый попавшийся тока, не понятно.
    
    – GeneratorSveta Sep 11 '15 at 15:01
  • @GeneratorSveta Чего? Ничего не понял. Если я ответил на ваш изначальный вопрос: Что делать когда кто-то ответил на мой вопрос?. Если у вас есть дополнительные вопросы, пожалуйста, задавайте их. – Dmitry D. Sep 11 '15 at 15:08
  • все разобрался спасибо большое, проблема решена сам чуть ошибся... – GeneratorSveta Sep 11 '15 at 15:09