Есть ли простой способ извлечь из строки, разделённой "," третий токен, НЕ СЧИТАЯ запятые, которые в скобках?

1. DWZ2 23.05.23 00:51 Сейчас в теме
Есть строка

Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 1744 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)


Требуется извлечь из неё третий токен, то есть "1920x1080". Ситуация осложняется тем, что в некоторых токенах могут быть скобки, в которых тоже могут быть запятые, которых считать не нужно, поэтому в лоб разбить строку в массив не получится. Приходится извращаться - обрабатывать строку символ за символом - встретилась запятая, посчитали, встретилась "(" - взвели флажок и не считаем, встретилась ")" - сбросили флажок и считаем запятые снова.

Или есть метод лучше? Регулярные выражения, например?
Вознаграждение за ответ
Показать полностью
Найденные решения
8. user1936670 24.05.23 07:30 Сейчас в теме +0.05 $m
(1)
Или есть метод лучше?
21 век на дворе...

ffprobe -v quiet -print_format json -show_format -show_streams "lolwut.mp4" > "lolwut.mp4.json"
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. karamazoff 100 23.05.23 01:04 Сейчас в теме
(1)Если вы уже извратились и сделали и работает, то и пусть. Дальше СтрНайти, Сред, Лев, Прав
3. user1852218 23.05.23 03:44 Сейчас в теме
(1)
в лоб разбить строку в массив не получится.
Получится, только скобки надо учитывать и в этом случае - разделяем в массив по запятым, а потом перебираем не символы, а элементы массива по тому же принципу:
встретилась содержит "(" - взвели флажок и не считаем, встретилась содержит")" - сбросили флажок и считаем запятые элементы снова
Да, упрощение/ускорение небольшое... примерно, как вознаграждение. ;)
8. user1936670 24.05.23 07:30 Сейчас в теме +0.05 $m
(1)
Или есть метод лучше?
21 век на дворе...

ffprobe -v quiet -print_format json -show_format -show_streams "lolwut.mp4" > "lolwut.mp4.json"
11. DWZ2 30.05.23 01:18 Сейчас в теме
(8) Без обид, но для 21-го века нужно что-то типа микросервисов или хотя бы OLE Automation, а тут старая добрая строка в стиле 70-х.

P.S. Удивительно устроен мир - на форуме, где я спрашивал в лоб про такое, мне никто не ответил, но зато отвечают здесь, хотя я даже про это не спрашивал :))))
4. laperuz 46 23.05.23 04:40 Сейчас в теме
Можно попробовать через регулярки
\d{3,4}[x]\d{3,4}

Найдет все вхождения вида "трех/четырехзначное число" "икс" "трех/четырехзначное число"
user5300; +1 Ответить
5. laperuz 46 23.05.23 05:19 Сейчас в теме
(4)Еще вариант - найти все "скобки, в которых тоже могут быть запятые", что-то типа такого:

[(].[^()]*?[,].*?[)]


Заменить их на пустую строку и дальше через СтрРазделить уже взять элемент с индексом 2.

На 8.3.23 это примерно так будет выглядеть(без проверок на индекс массива):

СтрокаОчищенная = СтрЗаменитьПоРегулярномуВыражению(СтрокаИсходная, "[(].[^()]*?[,].*?[)]","");
МассивПодстрок = СтрРазделить(СтрокаОчищенная, ",");
Сообщить(МассивПодстрок[2]);
user5300; +1 Ответить
6. muskul 23.05.23 06:36 Сейчас в теме
если стрнайти 1920х1080 тогда
иначеесли стрнайти 800x600 тогда
ну и так далее ))
7. DWZ2 23.05.23 23:54 Сейчас в теме
(6) Там могут быть и левые разрешения типа 1920х800
9. Xershi 1496 24.05.23 19:51 Сейчас в теме
еще можно попросить разработчика отдавать в нормализованно виде.
10. DWZ2 30.05.23 01:14 Сейчас в теме
(9) Разработчика ffmpeg? Ну-ну, удачи!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот