Исключение в регулярном выражении

Жалоба
Вопрос

Задача в следующем. Необходимо определять наличие русских букв вне комментариев. То есть, если в тексте встречается комментарий на русском языке

// Это комментарий

/*
* Это тоже комментарий
*/

то все ок. А вот если русские буквы встречаются ВНЕ КОММЕНТАРИЯ, прямо в коде, например

String s = "А вот это уже не комментарий";

То тогда реагировать.

То есть частью регулярного выражения должна быть проверка на русские буквы, но тоьлко в том случае, если левее их нет двойного слэша.
Проверка на русские буквы - элементарно: [а-яА-Я], а вто как быть с двойным слэшом?

Ни один из нижеперечисленных вариантов не проходит:
[^(//)][а-яА-Я]
[^(//)].*[а-яА-Я].*
[^(//)][а-яА-Я]
[/]{2}[а-яА-Я]

Я в регулярных выражениях новичок, но сколько ни роюсь в интернете, с похожей задачей как будто никто не сталкивался.
Дополнение #1 02.11.2010 23:37:23
latander, к сожалению ни один вариант не дает требуемого результата

Дополнение #2 08.11.2010 15:12:38
Ни один из вариантов не сработал.
На данный момент у меня есть два отдельных выражения.
Одно проверяет однострочные комментарии, но захватывает и многострочный:
(?<!//.*)[а-яА-Я]
Второе различает только многострочный комментарий, но не реагирует на однострочный:
*/[sS]*(?<!/*.*)[а-яА-Я]
Вопрос: как их объединить. Или еще более конкретный вопрос. Например, есть конструкция как негативный просмотр назад: (?<!шаблон). Как сюда включить ДВА условия? Чтобы выражение сраатывало только при отсутствии ОБОИХ шаблонов?

В процессе 1
программирование 4 года назад 3 Ответов 144 Просмотров 0

Ответов ( 3 )

    0
    7 лет назад
    Ответить

    ^([^/]|/[^/])*[а-яА-Я] как-нибудь так попробуй, для строк первого вида должно сработать

    ([^/]|/[^/*]|(/*([^*]|*[^*])**/))*[а-яА-Я] а такое должно в тексте сработать для второго правила тоже... но при условии одной строки

    Ну а комбинация для всего и сразу - ([^/]|/[^/*]|(/*([^*]|*[^*])**/)|//.*? )*[а-яА-Я] должна срабатывать в любом случае

    0
    7 лет назад
    Ответить

    (^(//))([а-яА-Я])* - так попробуйте.

  1. (//|/).*(([А-Яа-я])+?)

Ваш ответ