使用正则表达式提取字符串

时间:2017-11-23 03:22:07

标签: python regex

fix_release='Ubuntu 16.04 LTS'

p = re.compile(r'(Ubuntu)\b(\d+[.]\d+)\b')
fix_release = p.search(fix_release)
logger.info(fix_release) #fix_release is None

我想提取字符串' Ubuntu 16.04'

但是,结果是无......我怎样才能提取正确的句子?

2 个答案:

答案 0 :(得分:1)

您将单词边界\b与空格混淆,前者匹配单词字符和非单词字符之间的边界并消耗零字符,您只需使用r'Ubuntu \d+\.\d+'作为您的情况:< / p>

fix_release='Ubuntu 16.04 LTS'
p = re.compile(r'Ubuntu \d+\.\d+')
p.search(fix_release).group(0)
# 'Ubuntu 16.04'

答案 1 :(得分:1)

试试这个正则表达式:

Ubuntu\s*\d+(?:\.\d+)?

Click for Demo

<强>解释

  • Ubuntu - 按字面意思匹配Ubuntu
  • \s* - 尽可能多地匹配0+出现的空格
  • \d+ - 尽可能多地匹配1位数
  • (?:\.\d+)? - 匹配.后跟1位数字,尽可能多。最后?使此部分可选。

注意:在正则表达式中,您使用\b作为空格。 \b返回单词字符和非单词字符之间的0长度匹配。您可以使用\s代替