[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярное выражение
Страницы: 1, 2, 3, 4
SnowWind
Всем привет

есть повторяющийся текст с разными значениями, не могу понять как получить всё между SHOW DOWN где есть пользователь Super до SUMMARY

*** DEALING HANDS ***
Dealt to Super
leberwurst99: folds
Super: raises
1e_st@t: folds
Vendo71: calls
Aaron6565: folds
leberwurst99 said, ":)"
Vendo71: discards
Super: discards
Dealt to Super
Vendo71: checks
Super: checks
*** SHOW DOWN ***
Vendo71: shows
Super: shows
Vendo71 collected
*** SUMMARY ***
Total pot
Seat 2: Super
Seat 3: 1e_st@t
Seat 4: Vendo71
Seat 5: Aaron6565
Seat 6: leberwurst99

делаю так

$nick = 'Super';
preg_match_all('#(?<=)SHOW DOWN.*?'.$nick.'.*?(?=SUMMARY)#is', $contents, $result);
$defeat = count($result[0]);
print_r($result[0]);
Миша
Проверьте, не проверял.

$test = preg_replace('#Super([^.]+)SUMMARY)#', '$1', $value);


_____________
Принимаю заказы, писать в ЛС
Placido
Цитата
(?s)(?<=SHOW DOWN)((?!SUMMARY).)+\bSuper\b.+?(?=SUMMARY)

Например.
FatCat
Не люблю регулярки...
$txt = explode("*** SHOW DOWN ***", $txt);
foreach($txt as $k=>$v)
if(stristr($v, "Super"))$txt[$k] = substr($v,0,strpos($v,"*** SUMMARY ***"));
else unset($txt[$k]);


_____________
Бесплатному сыру в дырки не заглядывают...
SnowWind
ничего из этого не работает
Миша
Напиши, что хочешь получить на выходе.

_____________
Принимаю заказы, писать в ЛС
Kusss
SnowWind
Как это не работает ?
http://sandbox.onlinephpfunctions.com/code...b41727d02ff7461
Миша
Работает, проверил.

$test = preg_replace('#^[^.]+(Super[^.]+)[*]{3} SUMMARY[^.]+$#', '$1', $test);


_____________
Принимаю заказы, писать в ЛС
SnowWind
Цитата (Медведь @ 5.05.2016 - 09:06)
Работает, проверил.

$test = preg_replace('#^[^.]+(Super[^.]+)[\*]{3} SUMMARY[^.]+$#', '', $test);

есть куча текста, вот часть

Seat 1: Joker_SJ
Seat 2: Super
Seat 3: 1e_st@t
Seat 4: Vendo71
Seat 6: leberwurst99
1e_st@t: posts small
Vendo71: posts big
Aaron6565: sits out
*** DEALING HANDS ***
Dealt to Super
leberwurst99: raises
Joker_SJ: calls
Super: raises
1e_st@t: folds
Vendo71: folds
leberwurst99: calls
Joker_SJ: raises
Super: folds
leberwurst99: calls
leberwurst99: discards
Joker_SJ: discards
*** SHOW DOWN ***
leberwurst99: shows
Joker_SJ: shows
leberwurst99 collected
*** SUMMARY ***
Seat 1: Joker_SJ showed
Seat 2: Super (button)
Seat 3: 1e_st@t (small)
Seat 4: Vendo71 (big)
Seat 6: leberwurst99 showed



Seat 2: Super
Seat 3: 1e_st@t
Seat 4: Vendo71
Seat 5: Aaron6565
Seat 6: leberwurst99
Vendo71: posts small
Aaron6565: posts big
*** DEALING HANDS ***
Dealt to Super
leberwurst99: folds
Super: raises
1e_st@t: folds
Vendo71: calls
Aaron6565: folds
leberwurst99 said, ":)"
Vendo71: discards 2 cards
Super: discards
Dealt to Super
Vendo71: checks
Super: checks
*** SHOW DOWN ***
Vendo71: shows
Super: mucks
Vendo71 collected
*** SUMMARY ***
Seat 2: Super mucked
Seat 3: 1e_st@t (button)
Seat 4: Vendo71 (small)
Seat 5: Aaron6565 (big)
Seat 6: leberwurst99 folded

мне нужно собрать в массив такие отрывоки

Vendo71: shows
Super: mucks
Vendo71 collected


т.е там где ПЕРЕД стоит SHOW DOWN в тексте ЕСТЬ пользователь Super, ПОСЛЕ идёт SUMMARY
Миша
т.е. условие такое:
Если после Super идёт SHOW DOWN, нужно отобрать всё до SUMMARY ?

_____________
Принимаю заказы, писать в ЛС
SnowWind
Цитата (Медведь @ 5.05.2016 - 09:21)
т.е. условие такое:
Если после Super идёт SHOW DOWN, нужно отобрать всё до SUMMARY ?

Точно
SnowWind
А нет не так
Если после SHOW DOWN идёт Super отобрать всё до SUMMARY
Миша
Только обратил внимание, что таких блоков может быть несколько ))

_____________
Принимаю заказы, писать в ЛС
Guest
$contents = ...
$nick = 'Super';
preg_match_all('#' . preg_quote('*** SHOW DOWN ***') . '\s([^\*]+' . preg_quote($nick) . '[^\*]+)\s' . preg_quote('*** SUMMARY ***') . '#Uis', $contents, $result);
print_r($result[1]);


https://glot.io/snippets/eee6115zla
Игорь_Vasinsky
$nick = preg_quote("Super");
$pattern = preg_quote("SHOW DOWN ***(.*)*** SUMMARY");
$pattern = strtr($pattern, array('\(\.\*\)'=>'(\r\n'. $nick.'.*)'));
preg_match("#".$pattern."#Usu", $str, $m);

echo '<pre>' . print_r($m[1], 1) . '</pre>';



_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

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