Я пытаюсь написать регулярное выражение, которое получает все, кроме указанного шаблона. Я пытался использовать отрицательный взгляд, но всякий раз, когда проверяю свое выражение, оно никогда не работает.
У меня есть файлы, которые имеют такую форму:
(информация об мусоре) имя файла (другой мусор). расширение или [информация об мусоре] имя файла [другой мусор] .extension
Например, один из файлов - [O2CXDR] отчет за январь [77012] .pdf или (XEW7CK) комиссионные с продаж (99723) .xls
Я использую библиотеку regex.h в C, поэтому я считаю, что это библиотека POSIX.
Я надеюсь извлечь "filename" и ".extension", чтобы написатьскрипт, который будет содержать файлы filename.extension
До сих пор у меня есть выражение для выбора информации об мусоре с помощью скобок и пробелов вокруг нее, но я не могу выбрать остальные.
\s*(\[|\().*?(\]|\))+\s*
и отрицательный прогноз, который я пробовал, был:
.*(?!(\s*(\[|\().*?(\]|\))+\s*)).*
, но он просто выбирает все в одном совпадении.
Я уверен, что я не понимаю, взглядыи смотреть сзади правильно. Что мне нужно сделать, чтобы исправить свое выражение? Может кто-нибудь объяснить, как они работают, так как я немного растерялся. Спасибо!