Regex – отрицательный просмотр в любом месте строкиC#

Место общения программистов C#
Anonymous
Regex – отрицательный просмотр в любом месте строки

Сообщение Anonymous »

Как сопоставить шаблон, только если в той же строке перед ним нет определенного символа?
У меня есть следующий код регулярного выражения:

Код: Выделить всё

pattern = @"(?";
code = Regex.Replace(code, pattern, replacement);
Я хотел бы добавить критерий, который будет соответствовать только в том случае, если перед ним нет двух косых черт в одной строке (комментарий C#).

Я поигрался с ним и изменил шаблон:

Код: Выделить всё

pattern = @"(?])";
Но, видимо, это работает только в том случае, если 2 косых черты представляют собой 2 символа прямо[/b] перед ключевым словом.
Таким образом, этот шаблон не будет соответствовать «//foreach», но будет соответствовать «// foreach».

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

Спасибо.

РЕДАКТИРОВАТЬ:


Думаю, я недостаточно ясно выразился. Повторю свою проблему:

Я работаю над подсветкой синтаксиса, и мне нужно найти совпадения для ключевых слов C#, например «foreach». Однако мне также необходимо учитывать комментарии, которые определяются двумя косыми чертами. Я не хочу сопоставлять ключевое слово "foreach", если оно является частью комментария (2 косые черты в любом месте перед ним в той же строке.

Отрицательный просмотр не поможет мне в этом случае, потому что косые черты не обязательно будут прямо перед ключевым словом, например "// некоторый текст foreach" - я не хочу, чтобы этот foreach соответствовал.

И снова мой вопрос: как можно ли изменить мой шаблон так, чтобы он совпадал только в том случае, если перед ним в одной строке нет двух косых черт?

Надеюсь, теперь мой вопрос ясен.

Подробнее здесь: https://stackoverflow.com/questions/119 ... re-on-line

Вернуться в «C#»