Итак, я пытаюсь создать программу для переименования некоторых файлов. По большей части я хочу, чтобы они выглядели так:
[Тестирование] StupidName - 2 [720p] .mkv
Но я хотел бы иметь возможность изменить формат, если это необходимо. Если я использую MatchEvaluators, вам придется каждый раз перекомпилировать. Вот почему я не хочу использовать MatchEvaluator.
Проблема, с которой я столкнулся, заключается в том, что я не знаю, как или, если возможно, сказать Заменить, что, если группа была найдена, включите эту строку. Единственный синтаксис, который я когда-либо видел, был что-то вроде (?<group>:data)
, но я не могу заставить это работать. Ну, если у кого-то есть идея, я все за нее.
EDIT:
регулярные выражения захвата тока =
^(\[(?<FanSub>[^\]\)\}]+)\])?[. _]*(?<SeriesTitle>[\w. ]*?)[. _]*\-[. _]*(?<EpisodeNumber>\d+)[. _]*(\-[. _]*(?<EpisodeName>[\w. ]*?)[. _]*)?([\[\(\{](?<MiscInfo>[^\]\)\}]*)[\]\)\}][. _]*)*[\w. ]*(?<Extension>\.[a-zA-Z]+)$
^(?<SeriesTitle>[\w. ]*?)[. _]*[Ss](?<SeasonNumber>\d+)[Ee](?<EpisodeNumber>\d+).*?(?<Extension>\.[a-zA-Z]+)$
^(?<SeriesTitle>[\w. ]*?)[. _]*(?<SeasonNumber>\d)(?<EpisodeNumber>\d{2}).*?(?<Extension>\.[a-zA-Z]+)$
Текущий Regex = [${FanSub}]${SeriesTitle} - ${EpisodeNumber} [${MiscInfo}]${Extension}
Используя Regex.Replace, файл TestFile 101.mkv
, я получаю []TestFile - 1[].mkv
. Я хочу сделать так, чтобы []
был включен только в том случае, если была найдена группа FanSub
или MiscInfo
.
Я могу решить эту проблему с помощью MatchEvaluator, потому что я на самом деле могу скомпилировать функцию. Но это не будет простым решением для пользователей программы. Единственная другая идея, которую мне нужно решить, - это создать собственную функцию Regex.Replace, которая принимает специальный синтаксис.