Формулировка регулярного выражения для соответствия js-библиотекам и версии - PullRequest
0 голосов
/ 22 марта 2019

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

  • Я хотел бы написать регулярное выражение для соответствия таким словам, как: backbone, jquery, bootstrap, yui и совпадают с версиями библиотеки javascript, такими как 0.5.0 или 1.8 (как показано).

Как я могу разумно сделать это с python 3?

1 Ответ

1 голос
/ 22 марта 2019

Может быть, отправная точка: используйте два выражения, одно для версии, другое для lib:

import re

urls = """https://ajax.cdnjs.com/ajax/libs/backbone.js/0.5.0/backbone-min.js
https://ajax.cdnjs.com/ajax/libs/backbone-0.5.0.js
https://ajax.cdnjs.com/ajax/libs/jquery-min.js
https://ajax.cdnjs.com/ajax/libs/jquery-1.6.3.js
https://ajax.cdnjs.com/ajax/libs/backbone.js/0.5.0/backbone-min.js
https://stackpath.bootstrapcdn.com/bootstrap/4.0.2/js/jquery.validate.js
http://code.jquery.com/mobile/1.0rc2/jquery.mobile-1.0rc2.min.js">
http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js
http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js
http://yui.yahooapis.com/3.5.0/build/yui/yui-min.js"""
rx_version = re.compile(r'[-/](\d+[.\w]*)[/.]')
rx_lib = re.compile(r'/([a-z]+)[^/]+$')
for url in urls.split("\n"):
    version, lib = None, None

    # version
    m = rx_version.search(url)
    if m:
        version = m.group(1)

    m = rx_lib.search(url)
    if m:
        lib = m.group(1)

    print(lib, version)

Это дает

backbone 0.5.0
backbone 0.5.0
jquery None
jquery 1.6.3
backbone 0.5.0
jquery 4.0.2
jquery 1.0rc2
jquery 1.9.2
jquery 1.8
yui 3.5.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...