为什么re.VERBOSE导致正则表达式返回空?

时间:2018-02-04 22:30:19

标签: python regex

我有以下字符串:

s = '<a class="biz-name"><span>Gus’s World Famous Fried Chicken</span></a>'

返回预期结果:

regex = re.compile('''<a class="biz-name[\w\W]*?<span>(.*?)</span>''')
regex.findall()
['Gus’s World Famous Fried Chicken']

但是这会返回空:

regex = re.compile('''<a class="biz-name[\w\W]*?<span>(.*?)</span>''', re.VERBOSE)
regex.findall()
[]

唯一的区别是re.VERBOSE标志。

1 个答案:

答案 0 :(得分:1)

阅读the docs

  

模式中的空格被忽略,除非在字符类中,或者在未加转义的反斜杠之前,或者在*?,(?:或(?P&lt; ...&gt;。

之类的标记内)

问题是a class re.VERBOSEaclass相同,而re.compile(r'''<a\ class="biz-name[\w\W]*?<span>(.*?)</span>''', re.VERBOSE) raw ^ ^ escape space or it doesn't count in VERBOSE mode 不在您的输入中。您需要逃离该空间(并使用原始字符串以获得一般正确性):

low_row_num <- which(!is.na(df$condition_met))
high_row_num <- as.integer(df[low_row_num, "condition_met"])

if (high_row_num == Inf) {
  max_val <- max(df$high[(low_row_num+1):length(df$high)])
} else {
  max_val <- max(df$high[(low_row_num+1):high_row_num])
}