Как получить данные с помощью регулярных выражений - PullRequest
0 голосов
/ 04 марта 2019

У меня есть следующий шаблон:

    private const string _usernamePattern = "Username: <strong>.*</strong>";

и код:

    private string Grab(string text, string pattern)
    {
        Regex regex = new Regex(pattern);
        if (!regex.IsMatch(text))
            throw new Exception();
        else
            return regex.Match(text).Value;

    }

, поэтому он отлично работает для строк вроде:

Username: <strong>MyUsername</strong>

Но янужно только захватить MyUsername, без <strong> тегов.Как это сделать?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Попробуйте:

private const string _usernamePattern = "Username: <strong>(?<Email>.*)</strong>";
...
private string Grab(string text, string pattern)
{
    var match = Regex.Match(text, pattern);

    if (!match.Success)
        throw new Exception();
    else
        return match.Groups["Email"].Value;
}
0 голосов
/ 04 марта 2019

Вы не должны делать это с регулярным выражением, и вам следует использовать специальный html-парсер.

См. Этот вопрос, почему

RegEx соответствуют открытым тегам, кроме XHTMLавтономные теги

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

  • Позитивное предположение нулевой ширины за утверждением
  • Позитивное предположение нулевой ширины
(?<=<strong>).*?(?=</strong>)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...