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
Всем спасибо, решение не найдено
Вариант
freeek:
наверно рабочий, негативный просмотр вперёд, но программа (текстовой редактор) для которой мне нужно выражение, такие не поддерживает
цитата
09/03/10 в 10:56
freeek
gimcnuk писал:
Всем спасибо, решение не найдено
Вариант
freeek:
наверно рабочий, негативный просмотр вперёд, но программа (текстовой редактор) для которой мне нужно выражение, такие не поддерживает
просили регу, ее дали, хотя вариант от
SAV
будет побыстрее
если речь идет о кодинге, если вопрос встал в редакторе, то тут х.з. что поможет
Новая тема
Ответить
Эта страница в полной версии