Regex Последнее появление? - PullRequest
80 голосов
/ 04 декабря 2011

Я пытаюсь поймать последнюю часть после последней обратной косой черты
Мне нужно \Web_ERP_Assistant\)

Моя идея была:

C:\Projects\Ensure_Solution\Assistance\App_WebReferences\Web_ERP_WebService\Web_ERP_Assistant


\\.+?(?!\\)      //  I know there is something with negative look -ahead `(?!\\)`

Но я не могу его найти.

[Regexer Demo]

Ответы [ 7 ]

67 голосов
/ 04 декабря 2011

Ваше решение с отрицательным прогнозом будет, например, таким:

\\(?:.(?!\\))+$

См. здесь, в Regexr

34 голосов
/ 09 июля 2016

Тот, который работал для меня, был:

.+(\\.+)$

Попробуйте онлайн!

Объяснение:

.+     - any character except newline
(      - create a group
 \\.+   - match a backslash, and any characters after it
)      - end group
$      - this all has to happen at the end of the string
33 голосов
/ 31 мая 2013

Отрицательный взгляд вперед - это правильный ответ, но его можно записать более четко, например:

(\\)(?!.*\\)

Это ищет вхождение \, а затем в проверке, которая не совпадает, выглядитза любое количество символов, за которыми следует символ, который вы не хотите видеть после него.Поскольку он отрицательный, он совпадает только в том случае, если не находит соответствия.

24 голосов
/ 04 декабря 2011

Вы можете попробовать привязать его к концу строки, что-то вроде \\[^\\]*$. Хотя я не уверен, что для выполнения задачи обязательно нужно использовать регулярное выражение.

7 голосов
/ 04 декабря 2011

Как насчет этого регулярного выражения: \\[^\\]+$

2 голосов
/ 27 августа 2017

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

(\\[^\\]+)\\?$

[Regex Demo]

1 голос
/ 15 октября 2018

Если вы не хотите включать обратную косую черту, а только текст после нее, попробуйте это: ([^\\]+)$ или для unix: ([^\/]+)$

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...