Для этого вы можете использовать -replace
оператор . Ниже будут заменены все символы до и будут включены первые /
в каждой строке. Линии, которые не совпадают, не будут изменены.
# Example with one line
'hello/world' -replace '^.*?/'
# Example reading each line of a text file
(Get-Content .\myfile.txt) -replace '^.*?/'
Если вы хотите удалить все символы до и включая последний /
в каждой строке, вы можете использовать жадное совпадение .*
:
(Get-Content .\myfile.txt) -replace '^.*/'
Вы можете применять те же понятия, что и выше, и обрабатывать весь файл как одну строку с включенным Get-Content
ключом -Raw
. Это позволит вам удалить все символы до первого вхождения /
или последнего вхождения /
. Все, что вам нужно добавить, это однострочный синтаксис модификатора (?s)
, который позволяет .
сопоставлять символы новой строки:
# Remove Up Until First /
(Get-Content .\myfile.txt -Raw) -replace '(?s)^.*/'
# Remove Up Until Last /
(Get-Content .\myfile.txt -Raw) -replace '(?s).*/'
Объяснение:
^
указывает на начало строки. .*?
- ленивое совпадение для всех персонажей. Поскольку у нас есть последующий /
, он будет лениво совпадать, пока не будет найден /
. Поскольку строка замены не указана, соответствующие символы просто удаляются.
Однако, это может помочь набрать строку регулярного выражения, чтобы охватить только точный сценарий.