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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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