Python 单引号中的正则表达式版本
Python regex version in single quotes
鉴于下面的输入,我想要一个 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
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
编辑
如果您希望将 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])
您必须决定正则表达式的严格程度。几个例子:
rgx1 = re.compile(r"version +'(.+)'") # Pretty loose.
rgx2 = re.compile(r"version +'(\d+\.\d+\.\d+)'") # More strict.
而且您没有给我们足够的信息来明确区分输入文本中的两个版本号。这样做的适当方法取决于您的用例的具体情况。
rgx2.findall(TEXT) # ['7.14.77', '8.20.233']
鉴于下面的输入,我想要一个 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
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
编辑
如果您希望将 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])
您必须决定正则表达式的严格程度。几个例子:
rgx1 = re.compile(r"version +'(.+)'") # Pretty loose.
rgx2 = re.compile(r"version +'(\d+\.\d+\.\d+)'") # More strict.
而且您没有给我们足够的信息来明确区分输入文本中的两个版本号。这样做的适当方法取决于您的用例的具体情况。
rgx2.findall(TEXT) # ['7.14.77', '8.20.233']