Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Регулярные, выбрать не слово
цитата
09/03/10 в 09:03
 Alexandur
Подскажите, пожалуйста. Как, только регулярным выражением, выбрать строки, в которых нет определённого слова (НЕ последовательность символов).

Спасибо.
цитата
09/03/10 в 09:10
 freeek
приведи пример
цитата
09/03/10 в 09:20
 Alexandur
Код:
slovo raz
dva bez slov
tri s oshibkoi sloov


Выбрать те, где отсутствует slovo. Выражение должно выбирать 2 и 3.
цитата
09/03/10 в 09:55
 SAV
построчно проверяй на налачие, в чем проблема то?
цитата
09/03/10 в 09:58
 ibiz
лучше не использовать регулярки, они грузят серв, быстрее работает функция сравнения stripos
$text = array('slovo raz',
'dva bez slov',
'tri s oshibkoi sloov')
$slovo = "slovo";
foreach ($text as $hay)
if (stripos($hay, $slovo)===false)$need[]=$hay;
print_r($need);
цитата
09/03/10 в 10:15
 Alexandur
SAV писал:
построчно проверяй на налачие, в чем проблема то?

Подскажи.

ibiz: не подходит. Только регулярные, без методов языка.
цитата
09/03/10 в 10:25
 remorhaz
Только построчно. Для строки произвольной длины регуляркой не получится (а для фиксированной - регулярное выражение будет во много раз длиннее самой строки).
цитата
09/03/10 в 10:34
 Alexandur
Угу.

Тогда немного другой вариант. Есть некий постоянный элемент (последовательность символов), присутствующий в каждой строке. Нужно выбрать строки, в которых после этого элемента нет определённого слова.

Код:
vot element slovo raz
dva bez element slov
tri s oshibkoi element sloov

Опять же, выражение выбирает 2ю и 3ю строки.
цитата
09/03/10 в 10:45
 freeek
вся проблема в невнятном тз


если смотреть построчно и если нужно отбросить вариант Код:
vot element slovo raz


то:
Код:
^.*element\s(?!slovo raz).*$
цитата
09/03/10 в 10:47
 SAV
Код:
$source = file(текстовый файл);

$bad_word = "slovo";
$bad_string = $element." ".$bad_word;

foreach($source as $value) {
  if ((substr_count($value, $bad_string)) > 0) { continue; }
  вариант подходит, добавляем элемент-строку в массив-результат
}


примерно так
цитата
09/03/10 в 10:51
 Alexandur
Всем спасибо, решение не найдено icon_smile.gif
Вариант freeek: наверно рабочий, негативный просмотр вперёд, но программа (текстовой редактор) для которой мне нужно выражение, такие не поддерживает icon_sad.gif
цитата
09/03/10 в 10:56
 freeek
gimcnuk писал:
Всем спасибо, решение не найдено icon_smile.gif
Вариант freeek: наверно рабочий, негативный просмотр вперёд, но программа (текстовой редактор) для которой мне нужно выражение, такие не поддерживает icon_sad.gif


просили регу, ее дали, хотя вариант от
SAV будет побыстрее

если речь идет о кодинге, если вопрос встал в редакторе, то тут х.з. что поможет


Эта страница в полной версии