Учет группы которую можно отбросить в некоторых случаях

142
26 июня 2019, 22:20

Текущее состояние выражения:

^(.*)\/(.*)(?=\s\[(\d{1,})\sиз\s(\d{1,})\])

Можно ли сделать так, что бы 3я и 4я группа не захватывались если их нет, а когда есть, то захватывать?

На данный момент если 3я или 4я группа отсутствует, то строка вообще не матчится.

Пример данных для тестов:

Триплексоголик ТВ-2 / xxxHolic: Kei [13 из 13]
Золотое Божество ТВ-2 / Golden Kamuy TV-2 [11 из 12]
Космический линкор Тирамису ТВ-2 / Uchuu Senkan Tiramisu TV-2 [12 из 13]
Шестизарядник / Six Shooter
Answer 1

Изначальный вариант:

/^([^\/]+)\/(.+?)(?=\[(\d+)\hиз\h(\d+)]|$)/m

В комментариях вы написали, что сделали небольшие изменения. Не совсем понимаю к чему эти изменения с добавлением квантификатора \W, а также в логике между выбором конца строки ($), и захватом 3-ей и 4-ой групп.

Если речь об избавлении выделенных групп от пробелов, то можно привести к такому виду:

/^([^\/]+)\s\/\s(.+?)(?=\s\[(\d+)\hиз\h(\d+)]|$)/m

См. демо регулярного выражения.

Подробны детали по выражению:

  • ^ - начало строки
  • ([^\/]+) - первая группа, захватывает все до слэша (/)
  • \s\/\s - два пробела, между которыми стоит слэш
  • (.+?) - вторая захватывающая группа
  • (?= - начало позитивного просмотра вперед
    • далее идет захват конструкции - \s\[(\d+)\hиз\h(\d+)], или (|) же конец строки ($)
  • ) - конец позитивного просмотра вперед
READ ALSO
Два массива, второй зависим от первого

Два массива, второй зависим от первого

У меня есть массив int [] lvl, который можно менять количество элементов и значения через Inspector в ЮнитиНужно создать второй массив int[] keys, Length которого...

135
Include class oop php

Include class oop php

Мне не совсем понятен один момент с ООПЕсли я использую абстрактный класс, и пытаюсь в него подгрузить сторонний класс (не extends), находящийся...

142
Разница между mysqli_fetch_assoc и mysqli_fetch_array

Разница между mysqli_fetch_assoc и mysqli_fetch_array

Они вроде как оба возвращают ассоциативный массив В чем разница

163
phpQuery xml парсинг

phpQuery xml парсинг

Не могу справится с парсингом xml ссылки

144