|
|
|
| Уважаемые, направьте на истинный путь! С регулярными выражениями столкнулся впервые. Не могу найти, как описывать отрицание? Наример, есть последовательность abc. Как описать выражение, чтобы оно удовлетворяло условию при отсутствии abc?
Если в общем задача - нужно выявить наличие в тексте русских букв вне комментариев. Комментарии могут быть либо построчными (//), либо блочными (/* ........... */). | |
|
|
|
|
|
|
|
для: Paysockee
(02.11.2010 в 15:26)
| | [abc] - соответствует любой из трех букв
[^abc] - соответствует любому символу, кроме указанных трех | |
|
|
|
|
|
|
|
для: neadekvat
(02.11.2010 в 16:00)
| | Это понятно, но как быть если у меня не один символ, а последовательность? В частности, мне нужно избегать последовательности символов // и */ | |
|
|
|
|
автор: ..... (02.11.2010 в 17:15) |
|
|
для: Paysockee
(02.11.2010 в 16:28)
| | (?!abc) - утверждает что следующие после текущей позиции символы не должны быть строкой 'abc'
но идея вцелом непонятна, хотите после нахождения конца комментария проверять что найдёт раньше, русских букв или начал комментариев ?
а для нахождения конца комментария сначала надо искать начало комментария ? | |
|
|
|
|
автор: ..... (02.11.2010 в 17:15) |
|
|
для: Paysockee
(02.11.2010 в 16:28)
| | с чего начинается Ваше выражение ? | |
|
|
|
|
|
|
|
для: .....
(02.11.2010 в 17:15)
| | Задача в следующем. Необходимо определять наличие русских букв вне комментариев. То есть, если в тексте встречается комментарий на русском языке
// Это комментарий
/*
* Это тоже комментарий
*/
то все ок. А вот если русские буквы встречаются ВНЕ КОММЕНТАРИЯ, прямо в коде, например
String s = "А вот это уже не комментарий";
То тогда реагировать.
То есть частью регулярного выражения должна быть проверка на русские буквы, но тоьлко в том случае, если левее их нет двойного слэша.
Проверка на русские буквы - элементарно: [а-яА-Я], а вто как быть с двойным слэшом?
Ни один из нижеперечисленных вариантов не проходит:
[^(//)][а-яА-Я]
[^(//)].*[а-яА-Я].*
[^(//)][а-яА-Я]
[/]{2}[а-яА-Я]
Я в регулярных выражениях новичок, но сколько ни роюсь в интернете, с похожей задачей как будто никто не сталкивался. | |
|
|
|
|
автор: ..... (02.11.2010 в 18:39) |
|
|
для: Paysockee
(02.11.2010 в 17:56)
| | нужно было искать по словам "Лексический анализ" :)
задача у Вас не настолько простая насколько такой кажется.
если даже будете просматривать весь текст например таким
preg_replace_callback('@\G(?>//[^\r\n]*|/\*.*?\*/|.+?)(?#непроверял)@s' ............ )
то откуда уверенность что // или /* не просто строка в кавычках, а именно начало комментария, значит нужно анализировать и строки в кавычках, ..... | |
|
|
|