У меня возникают проблемы с получением строки для возврата с использованием replace(), где мне нужно получить числовые цифры, но только из цифр, которые последовательно расположены в 8-символьной группе.
Некоторые из этих строк будут иметь другие числа внутри них, но эти числа никогда не будут в коллекции из 8 групп, поэтому я хотел бы пропустить их и возвращать только те цифры, которые находятся в группе из 8 цифр.
осветление
Эти строки на самом деле являются именами файлов, но если мне удастся получить помощь в этом простом примере для получения ожидаемого результата, я легко смогу включить их в другую логику PowerShell скриптового процесса.
Я предпочитаю не использовать
YYYY
текущего года,$YYYY = (get-date).year
или что-либо подобное, а затем искать другие цифры, чтобы само имя файла определяло действие, а не год независимо от того,Я пробовал различные методы и даже получил некоторые, чтобы вернуть
TRUE
используя IN think"[^0-9]{8}.*$
Или что-то в этом роде, но ничего такого, что само по себе не могло бы вернуть реальные 8 цифр.
Пример строки данных
error_PP3_XXX_PSI_20180109PM.err
error_PP3_XXX_PSI_20180110AM.err
error_PP3_XXX_PSI_20180111PM.err
error_PP3_XXX_PSI_20180115PM.err
error_PP3_XXX_Temp_20180110AM.err
error_YYY_20180109AM.err
error_YYY_20180109PM.err
PowerShell
Правильный результат
Это рабочий пример, где в строке только 8 последовательных цифр
"error_YYY_20180109PM.err" -replace "[^0-9]" , ""
Результат
20180109
Неверный результат
Это нерабочий пример, где в строке есть дополнительные числовые символы, а не только 8 последовательных цифр
"error_PP3_XXX_PSI_20180115PM.err" -replace "[^0-9]" , ""
Результат
320180115