Регулярное выражение, удалите все после последнего слеш - PullRequest
10 голосов
/ 21 декабря 2011

Я пытаюсь использовать регулярное выражение в PowerShell, чтобы удалить все из последней косой черты в этой строке;

 NorthWind.ac.uk/Users/Current/IT/Surname, FirstName
 NorthWind.ac.uk/Users/Dormant/DifferentArea/Surname, FirstName

Мне нужно удалить фамилию, имя, в том числе /. Строка должна выглядеть следующим образом.

 NorthWind.ac.uk/Users/Current/IT

Если бы кто-то мог мне помочь, я был бы очень благодарен.

Я пробовал это; -replace '([/])$','' но я не могу заставить его работать.

Спасибо

Ответы [ 5 ]

33 голосов
/ 21 декабря 2011

Заменить /[^/]*$ пустой строкой

2 голосов
/ 21 декабря 2011

отметьте это регулярное выражение http://regexr.com? 2vhll я не могу проверить это на powershell, но он работает в генераторе регулярных выражений

/(?!.*/).*
0 голосов
/ 21 декабря 2011

Вот еще одно решение, которое не требует регулярных выражений:

Взять подстроку вашей строки, начиная с начала строки и заканчивая перед индексом последней косой черты в вашей строке:

PS> $indexoflastslash = ("NorthWind.ac.uk/Users/Current/IT/Surname, FirstName").lastindexof('/')
PS> "NorthWind.ac.uk/Users/Current/IT/Surname, FirstName".substring(0,$indexoflastslash)
0 голосов
/ 21 декабря 2011

Это решение не использует регулярные выражения. Я полагаю, что этот подход, вероятно, легче понять, ведь все регулярные выражения трудно читать:

NorthWind.ac.uk/Users/Current/IT/Surname, FirstName имеет структуру, похожую на путь (Windows также поддерживает прямую косую черту в качестве разделителя пути), поэтому мы можем использовать split-path для возврата родительского пути «directory».

Поскольку «\» является разделителем пути по умолчанию, после этого необходимо заменить «\» на «/»:

(split-path NorthWind.ac.uk/Users/Current/IT/Surname, FirstName).replace('\','/')
# will return NorthWind.ac.uk/Users/Current/IT
0 голосов
/ 21 декабря 2011

Вот решение, которое не требует регулярных выражений:

PS> $cn = 'NorthWind.ac.uk/Users/Current/IT/Surname, FirstName' -split '/'
PS> $cn[0..($cn.count-2)] -join '/'
NorthWind.ac.uk/Users/Current/IT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...