помогите с regexp

_
На сайте с 11.10.2011
Offline
0
474

есть строка "3525 Sage, #807 ( Houston, TX 77056 ( blablabla"

мне нужно получить "3525 Sage, #807 ( Houston" - набор символов до второй запятой, без скобки.

использую $pattern = '/([0-9]*[a-zA-Z ]*[,][a-zA-Z #0-9\t]*[\(\)#?]*[a-zA-Z #0-9]*)/';

но в результате получается строка с "(".

пытался использовать "?:" - чтобы сгрупировать, но не включать в поиск

$pattern = '/([0-9]*[a-zA-Z ]*[,][a-zA-Z #0-9\t]*?:\([a-zA-Z #0-9]*)/';

$pattern = '/([0-9]*[a-zA-Z ]*[,][a-zA-Z #0-9\t]*?:[\(\)#?]*[a-zA-Z #0-9]*)/';

но результат пустой. подскажите, плиз.

UPD решено, разобрался. "?:" - исключает из результата паттерн а не вырезает из результата значение. не правильно понял мануал

AutoBlogger
На сайте с 05.10.2011
Offline
128
#1

Зачем заморачиваться с какими-то мудреными паттернами, когда все можно сделать очень просто?

$text = "3525 Sage, #807 ( Houston, TX 77056 ( blablabla, blablabla ...";
preg_match('/^(.*?,.*?),/', $text, $matches);
echo $matches[1];
🪄 www.cyberseo.net - плагин для создания автоблогов под WordPress, с поддержкой OpenAI GPT, Anthropic Claude, Google Gemini, Llama, Mistral, Midjourney, FLUX, Stable Diffusion | 📣 Импорт RSS / XML / JSON/ CSV / HTML
_
На сайте с 11.10.2011
Offline
0
#2

я понимаю, что способов много

и (блабла1)\((блабла2) - объеденить в результате

и вырезать конкретную скобку ... и еще много много у каждого штук по 5 ))

но, почему не работает "?:" - я его не правильно использую ?

----

а вообще, смысл - не в конкретной строке, а в более менее шаблонное решение для парсинга.

P.S. спасибо за оперативность

AutoBlogger
На сайте с 05.10.2011
Offline
128
#3

Я даже не вникал :) Вы спросили "как" - я показал.

_
На сайте с 11.10.2011
Offline
0
#4

разобрался. "?:" - исключает из результата паттерн а не вырезает из результата значение. не правильно понял. дальше - preg_replace

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий