Regex отрицательный взгляд в c # - PullRequest
3 голосов
/ 22 февраля 2011

Мне нужно соответствовать ["this", но не :["this"

У меня есть этот код:

        Match match = Regex.Match(result, @"\[""(.*?)""",
            RegexOptions.IgnoreCase);

        while (match.Success)
        {
            MessageBox.Show(match.Groups[1].Value.Trim());
        }

Я пробовал шаблон @"(?!:)\[""(.*?)""", но он все еще соответствует :["this". Какой шаблон мне нужен для достижения этой цели?

Ответы [ 3 ]

5 голосов
/ 22 февраля 2011

Вы смотрите вперед (вправо в строке), когда хотите посмотреть назад (влево в строке).

Попробуйте @"(?<!:)\[""(.*?)""".

3 голосов
/ 22 февраля 2011

Я использовал RegexBuddy (мне нравится это приложение), установленный на .NET, и получил следующее выражение:

@"(?<!:)\[""(.*?)"""
2 голосов
/ 22 февраля 2011

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

Match match = Regex.Match(result, @"(?<!:)\[""(.*?)""", RegexOptions.IgnoreCase);
...