@MdaUZH

Как правильно составить регулярное выражение для резки по ()?

Всем привет..
Есть строка:
(name)(type)(percent)(who)
name - любая строка, пробелы, -, и прочие символы..
desc - любое число ([\d])
percent - любая трока любые символы
who - любая строка и символы

Но (who) в строке не всегда.

У меня вышло как-то так:
/(\([\2 ]*\))[\s]*(\([\S ]*\))[\s]*(\([\S ]*\))[\s]*(\([\S ]*\))?/i


но режет по скобкам как-то не верно...

Подскажите как правильно получить что в скобках ?
каждые скобки - отдельный элемент массива

так же нужно чтобы резалось такая строка - (cgfddfv fl)(3)(yo 15 %)(vk.com/sda)
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
27cm
@27cm
TODO: Написать статус
\((?<name>[^)]+)\)\((?<type>\d+)\)\((?<percent>[^)]+)\)(?:\((?<who>[^)]+)\))?

https://regex101.com/r/mS1vE2/3
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
muhammad_97
@muhammad_97
PHP-разработчик
\(([^\)]*)\)\(([\d]*)\)\(([^\)]*)\)\(([^\)]*)\)
https://regex101.com/r/rN8tG2/1
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы