Regex, чтобы выбрать последнее слово из пути - PullRequest
1 голос
/ 14 марта 2020

У меня есть несколько строк вроде следующего:

C:/DB/UCMerced_LandUse/UCMerced_LandUse/Unfoldered_Images/airplane00.tif

Я бы хотел оставить только 'airplane'. Для этого я предложил следующие регулярные выражения:

[^/]+$ - который выберет 'airplane00.tif'

^\D* - который удалит последнюю часть (то есть 'C:/DB/UCMerced_LandUse/UCMerced_LandUse/Unfoldered_Images/airplane')

Как мне объединить эти два, чтобы получить только 'airplane'? Или, возможно, есть лучший подход ...

Спасибо.

Ответы [ 4 ]

1 голос
/ 14 марта 2020

Вы можете использовать это регулярное выражение и захватить захваченную группу # 1

([^/\d]+)[^/]*$

RegEx Demo

[^/\d]+ соответствует 1 или более символам, которые не являются \d и /.

В качестве альтернативы , вы также можете использовать это регулярное выражение с утверждениями lookbehind и lookahead:

(?<=/)[^/\d]+(?=[^/]*$)
0 голосов
/ 14 марта 2020

В качестве альтернативы вы можете сопоставить до последнего вхождения /, а затем захватить любой символ, кроме форварда sla sh или di git в группе ([^/\d]+)\d*, и сопоставить любые потенциально следующие цифры.

Затем сопоставьте точку и любой символ, кроме прямого слэ sh.

Значение находится в группе захвата 1.

/([^/\d]+)\d*\.[^/]+$

Regex demo

0 голосов
/ 14 марта 2020

Попробуйте

[^\]([a-zA-Z]+)[^\].*$

Тогда вам просто нужно получить первую группу.

В python все, что вам нужно сделать, это добавить .group(1) в конец вашей строки .

проверить эту статью о захвате групп

0 голосов
/ 14 марта 2020

Используйте ([^\/]+)\.\D+$ и сопоставьте первую группу захвата.

Вероятно, лучше использовать некоторые встроенные функции вашего языка программирования, чтобы получить имя файла из пути. Также возможно разделение строки.

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