그래서 일부 파일의 이름을 바꾸는 프로그램을 만들려고합니다. 2 [720p의] 내가 원하는 경우, 형식을 변경할 수 있도록하고 싶습니다, 조건부 정규식 C#에서 MatchEvaluator를 사용하지 않고 바꾸기
을 .mkv하지만 - 대부분의 경우, 나는 그들이[테스트] StupidName는, 다음과 같이하고 싶다. MatchEvaluators를 사용하면 매번 다시 컴파일해야합니다. 그래서 내가 MatchEvaluator를 사용하고 싶지 않습니다.
내가 가진 문제는 그룹이 발견 된 경우 바꾸기를 지시하는 방법 또는 가능한 경우이를 알 수 없다는 것입니다.이 문자열을 포함하십시오. 지금까지 본 적이있는 유일한 구문은 (?<group>:data)
과 같은 것이지만이 기능을 사용할 수는 없습니다. 글쎄, 누군가가 아이디어를 가지고 있다면, 그것을 위해 모두.
편집 :
현재 캡처 정규 표현식에 = Regex.Replace 파일 TestFile 101.mkv
, 내가 []TestFile - 1[].mkv
를 얻을 사용
^(\[(?<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]+)$
현재 교체 정규식 = [${FanSub}]${SeriesTitle} - ${EpisodeNumber} [${MiscInfo}]${Extension}
. 그룹 FanSub
또는 MiscInfo
이있는 경우에만 []
이 포함되도록하고 싶습니다.
실제로이 함수를 컴파일하기 때문에 MatchEvaluator로이 문제를 해결할 수 있습니다. 그러나 이것은 프로그램 사용자에게 쉬운 해결책은 아닙니다. 이 문제를 해결할 유일한 아이디어는 특별한 구문을 허용하는 Regex.Replace 함수를 실제로 만드는 것입니다.
질문이 명확하지 않다 ... 자세한 내용을 원하는대로 설명하고 작동하지 않는 코드를 게시하십시오. –
희망 사항이 더 명확합니다. – Buttink