Regex: как выбрать real path из строки?
Не могу победить до конца регулярку. Нужно из строки выбрать группы: datetime, текст внутри квадратных скобок и путь (исключить имя файла) из подстроки.
Пример строки:
2023-10-26 03:06:55,136 WARN [TSSS_NSSS-SIB] done ip 10.33.22.22 f '/mnt/data/DD/DD/A/sds/tdf/DDdf-fdfd-dfdf_dfdf_3433343.txt' t '/DDdf-fdfd-dfdf_dfdf_3433343.txt' sz 3507
Вот регулярка: (.*)(\sWARN\s{2}\[)(.*)(\]\s)(done[^\']+\')
Не получается сказать, что нужно дальше выбрать все от первого вхождения "/" до последнего вхождения "/" в подстроке с путем. В итоге из этой строки нужно выбрать группами:
2023-10-26 03:06:55
TSSS_NSSS-SIB
/mnt/data/DD/DD/A/sds/tdf/
Ответы (2 шт):
Автор решения: Швеев Алексей
→ Ссылка
Исходя из задачи убрал кучу лишних групп и не только. Вот:
UPDATED: Обновил для Rust
([^,]*)[^\[]*\[(.*)\][^']+'([^']*)'
https://regex101.com/r/57lg9l/2
UPDATED2: Если надо только если WARN и done:
([^,]*),\d*\sWARN\s*[^\[]*\[(.*)\]\sdone\s[^']+'([^']*)'
UPDATED3: Не цепляя имя файла:
([^,]*)[^\[]*\[(.*)\][^']+'([^']*)/.*\..*'