Соответствующие пути файловой системы, но не URL-адреса в Python - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь написать регулярное выражение, которое будет соответствовать любому пути файловой системы, но не любому URL (я предполагаю, что URL начинаются с http ). Например, я хотел бы сопоставить любой путь с расширением имени файла svg , если только перед ним не стоит http , так что hei.svg соответствует, но не http://hey.svg

Моя (вероятно) ближайшая попытка

'(?:(?!http))(\S+\.svg)'

и

re.findall('(?:(?!http))(\S+\.svg)', 'hey.svg')                                                 

[' hey.svg ']

но

re.findall('(?:(?!http))(\S+\.svg)', 'http://hey.svg')                            

[' ttp: //hey.svg ']

Любая помощь приветствуется.

Ура.

1 Ответ

1 голос
/ 06 апреля 2020

Если путь не должен начинаться с http и содержать .svg

(?<!\S)(?!http)\S+\.svg(?!\S)

Объяснение

  • (?<!\S) Установить границу пробела для left
  • (?!http) Утверждение не http прямо направо
  • \S+\.svg Соответствие 1+ непробельным символам и .svg
  • (?!\S) Утверждение границы пробела

Regex demo

Если путь должен содержать .svg, вы можете изменить (?!\S) на \S+

(?<!\S)(?!http)\S+\.svg\S*

Regex demo

Примечание , что при использовании \S предполагается, что путь не содержит символ пробела.

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