У меня есть сценарий PowerShell Scriptline, который заменяет (удаляет) символы между вторым и третьим подчеркиванием на «_»:
get-childitem *.pdf | rename-item -newname { $_.name -replace '_\p{L}+, \p{L}+_', "_"}
Примеры:
12345_00001_LastName, FirstName_09_2018_Text_MoreText.pdf
12345_00002_LastName, FirstName-SecondName_09_2018_Text_MoreText.pdf
12345_00003_LastName, FirstName SecondName_09_2018_Text_MoreText.pdf
This _\p{L}+, \p{L}+_
регулярное выражение работает только для первого примера.Чтобы заменить все промежуточное, я использовал _(?:[^_]*)_([^_]*)_
(в соответствии с regex101 это должно почти сработать), но вывод:
12345_09_MoreText.pdf
Желаемый вывод будет:
12345_00001_09_2018_Text_MoreText.pdf
12345_00002_09_2018_Text_MoreText.pdf
12345_00003_09_2018_Text_MoreText.pdf
Как сделатьЯ правильно заменяю второе и третье подчеркивание и все промежуточное на "_"?