[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярное выражение
Страницы: 1, 2, 3, 4
Миша
Цитата (SnowWind @ 6.05.2016 - 22:00)
найти всё, где перед идёт SHOW DOWN в тексте есть пользователь Super, но Super нет перед collected, после текста идёт SUMMARY

Вы так объясняете, что на трезвую голову не понять.
где перед идёт SHOW DOWN

Что это? Я понял, что у вас перед ходит, а SHOW DOWN просто рядом стоит :)

_____________
Принимаю заказы, писать в ЛС
SnowWind
laugh.gif
перед искомым выражением

вот это нужно получить:

Super: mucks
Vendo71: shows
Vendo71 collected

перед этим текстом есть SHOW DOWN, в тексте Super, перед collected нет Super, после текста идёт SUMMARY
Миша
Цитата (SnowWind @ 7.05.2016 - 08:26)
после текста идёт SHOW DOWN

А не SUMMARY

_____________
Принимаю заказы, писать в ЛС
SnowWind
ага SUMMARY я уже сам запутался
SnowWind
Цитата (Игорь_Vasinsky @ 6.05.2016 - 18:36)
SnowWind
так вы батенька себе попу порвёте.

соберите все блоки в массив и простенькой логикой в цикле шуршите по ним.

так в цикле той же регуляркой и то же выражение будет
Миша
Цитата (SnowWind @ 7.05.2016 - 12:24)
Цитата (Игорь_Vasinsky @ 6.05.2016 - 18:36)
SnowWind
так вы батенька себе попу порвёте.

соберите все блоки в массив и простенькой логикой в цикле шуршите по ним.

так в цикле той же регуляркой и то же выражение будет

Re: шуршите по ним

Ручками ) А я пока занят, вечером если что.

_____________
Принимаю заказы, писать в ЛС
Миша
if(preg_match_all("#[^\*]*Super[^\*]*#", $contents, $matches)) {

foreach($matches[0] as $key => $value) {
if(!preg_match("#Super[^\n]*\n[^\n]*collected#", $value)) {
$res[] = $value;
}
}


print_r($res);
}

P.S. Не писать lol что так сложно ;) Свой вариант предложите, а у меня времени не было.

_____________
Принимаю заказы, писать в ЛС
SnowWind
ага я так же стал делать, но только выражение не смог написать
нет, медведь так не работает

нужно выбрать всё где в тексте нет Super collected




preg_match_all('#' . preg_quote('*** SHOW DOWN ***') . '\s([^\*]+' . preg_quote($nick) . '[^\*]+)\s' . preg_quote('*** SUMMARY ***') . '#Uis', $contents, $result);

foreach ($result[1] as $key => $value)
{
preg_match('#.*(?!Super\s+collected).*#is', $value, $loose[$key]);
}
print_r($loose);
Миша
Цитата (SnowWind @ 7.05.2016 - 08:26)
Super: mucks
Vendo71: shows
Vendo71 collected

Составил по вашему примеру и даже проверил, работает.

_____________
Принимаю заказы, писать в ЛС
SnowWind
по моему примеру он всё выбирает и такие тоже
Super: shows
Vendo71: mucks
Super collected
Миша
Цитата (SnowWind @ 7.05.2016 - 21:56)
по моему примеру он всё выбирает и такие тоже
Super: shows
Vendo71: mucks
Super collected

Цитата
вот это нужно получить:

Super: mucks
Vendo71: shows
Vendo71 collected

перед этим текстом есть SHOW DOWN, в тексте Super, перед collected нет Super, после текста идёт SUMMARY


Не, не вы писали?)

_____________
Принимаю заказы, писать в ЛС
SnowWind
я писал, так он выбирает и это тоже
Super: shows
Vendo71: mucks
Super collected
а не должен, точнее мне так не нужно )
Миша
Значит Super должен быть, а collected нет. Правильно?

if(!preg_match("#Super[^\n]*\n[^\n]*collected#", $value)) {

заменить на
if(!preg_match("#collected#", $value)) {


_____________
Принимаю заказы, писать в ЛС
SnowWind
smile.gif прям головоломка

Теперь уже нужно выбрать все, если перед collected нет Super
Миша
Цитата (SnowWind @ 7.05.2016 - 22:16)
smile.gif прям головоломка

Теперь уже нужно выбрать все, если перед collected нет Super

Предыдущий вариант сработал?

_____________
Принимаю заказы, писать в ЛС
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.