Python версия регулярного выражения в одинарных кавычках - PullRequest
0 голосов
/ 17 июня 2020

Учитывая вводные данные ниже, я бы хотел Python совместимое регулярное выражение, вывод которого является значением второй версии ... «8.20.233». Я изо всех сил пытался собрать решение из множества поисков, но, похоже, я просто не могу найти правильную комбинацию. Спасибо, что посмотрели.

cask 'logitech-options' do
  if MacOS.version <= :sierra
    version '7.14.77'
    sha256 'e4df55642e04139fc93d955e949bf736196a404ed067d87f8de7eb9ac9117ece'
  else
    version '8.20.233'
    sha256 '52427d5fa9f0e0508c3414906212774b7ae142450d6dcf90fe1a4d6b51449c67'
  end

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Вам нужно будет решить, насколько строгим будет ваше регулярное выражение. Пара примеров:

rgx1 = re.compile(r"version +'(.+)'")              # Pretty loose.
rgx2 = re.compile(r"version +'(\d+\.\d+\.\d+)'")   # More strict.

И вы не предоставили нам достаточно информации, чтобы разумно различать guish между двумя номерами версий во входном тексте. Подходящий способ сделать это будет зависеть от специфики вашего варианта использования.

rgx2.findall(TEXT)  # ['7.14.77', '8.20.233']
0 голосов
/ 17 июня 2020
import re

s = """cask 'logitech-options' do
  if MacOS.version <= :sierra
    version '7.14.77'
    sha256 'e4df55642e04139fc93d955e949bf736196a404ed067d87f8de7eb9ac9117ece'
  else
    version '8.20.233'
    sha256 '52427d5fa9f0e0508c3414906212774b7ae142450d6dcf90fe1a4d6b51449c67'
  end"""
result = re.findall(r"'([\d\.]*?)'", s)

print(result[1])

И выведите:

8.20.233

EDIT

Если вы хотите получить 8.20.233 в качестве первого совпадения, измените свой код следующим образом:

import re

s = """cask 'logitech-options' do
  if MacOS.version <= :sierra
    version '7.14.77'
    sha256 'e4df55642e04139fc93d955e949bf736196a404ed067d87f8de7eb9ac9117ece'
  else
    version '8.20.233'
    sha256 '52427d5fa9f0e0508c3414906212774b7ae142450d6dcf90fe1a4d6b51449c67'
  end"""
result = re.findall(r"else\s+version\s+'([\d\.]*?)'", s)

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