【发布时间】:2021-03-21 08:10:18
【问题描述】:
我对正则表达式有点陌生,我的输出列表中有一些我无法理解的空字符串。我有以下字符串:
string ='[-1, <samp>clear</samp>, -1, None, -1] [-1, None, -1, None, -1, <time class="text-nowrap" datetime="2021-03-22T17:06:03.000Z" id="availability-time"></time>, -1, None, -1'
我正在尝试提取<samp> tags (which is "clear") 和日期2021-03-22T17:06:03.000Z 之间的单词。尽管我的模式看起来运行良好,但当我将它们与逻辑运算符或 (|) 组合在一起时,输出列表中会出现空字符串。
示例:
import re
pattern = '\>([a-zA-Z]+)\<'
pattern2= '(\d{4}-\d{2}-\d{2}[a-zA-Z][\d:\.[a-zA-Z]+)'
string = '[-1, <samp>clear</samp>, -1, None, -1] [-1, None, -1, None, -1, <time class="text-nowrap" datetime="2021-03-22T17:06:03.000Z" id="availability-time"></time>, -1, None, -1'
print(re.findall(pattern,string))
print(re.findall(pattern2,string))
输出
['clear']
['2021-03-22T17:06:03.000Z']
现在,当我将 pattern 与 pattern2 与 | 结合起来时,我得到以下结果:
import re
pattern = '\>([a-zA-Z]+)\<|(\d{4}-\d{2}-\d{2}[a-zA-Z][\d:\.[a-zA-Z]+)'
string = '[-1, <samp>clear</samp>, -1, None, -1] [-1, None, -1, None, -1, <time class="text-nowrap" datetime="2021-03-22T17:06:03.000Z" id="availability-time"></time>, -1, None, -1'
print(re.findall(pattern,string))
输出
[('clear', ''), ('', '2021-03-22T17:06:03.000Z')]
这些空字符串从何而来?请帮忙!
【问题讨论】:
标签: python python-3.x regex string