Python 正则表达式组匹配显示多余的空字符串
Python regex group matches shows extra empty string
我想从我的文本中获取后跟 DATE FILLED
和 REFILL
的日期。 DATE FILLED
或 REFILL
的顺序不固定。日期模式可以是:
6/23/20
6-23-20
我的 Python 脚本是:
expiration_date_regex = re.compile(r"(USE\s+BY.*(?P<expiration>\d{1,2}/\d{1,2}/\d{2,4}))|(DATE\s+FILLED.*(?P<date_filled>\d{1,2}/\d{1,2}/\d{2,4}))", re.M)
find_matches(expiration_date_regex, text)
def find_matches(regex, text):
matches = regex.findall(text)
for match in matches:
print(match)
我的文字是:
CVS pharmacy
713-217 HsonSt
OTY: 90
REFILL 0 Refills
PRSCBN. A Beil
DATE FILLED 6/23/20
USE BY. 6/23/21
RPH Bill Liu
MFR AUROBINDO PHARM
ST DEA BC2236645
This is a WHITE
REDTME
但我得到的输出是这样的,输出几乎是合理的,但我不明白第一个元组中前两个空字符串的含义是什么?第二个元组的最后两个字符串也是如此。它看起来像位掩码:
('', '', 'DATE FILLED 6/23/20', '6/23/20')
('USE BY. 6/23/21', '6/23/21', '', '')
正在将我的评论转换为答案,以便未来的访问者可以轻松找到解决方案。
您可以使用这个正则表达式:
(?i)(USE\s+BY|DATE\s+FILL(?:ED)?).*(?P<date>\d{1,2}[-/]\d{1,2}[-/]\d{2,4})
正则表达式详细信息:
(?i)
: 启用忽略大小写模式
(USE\s+BY|DATE\s+FILL(?:ED)?)
:匹配USE BY
或DATE FILLED
或DATE FILL
.*
:匹配0个或多个任意字符
(?P<date>\d{1,2}[-/]\d{1,2}[-/]\d{2,4})
:使用/
或-
作为分隔符匹配日期字符串
我想从我的文本中获取后跟 DATE FILLED
和 REFILL
的日期。 DATE FILLED
或 REFILL
的顺序不固定。日期模式可以是:
6/23/20
6-23-20
我的 Python 脚本是:
expiration_date_regex = re.compile(r"(USE\s+BY.*(?P<expiration>\d{1,2}/\d{1,2}/\d{2,4}))|(DATE\s+FILLED.*(?P<date_filled>\d{1,2}/\d{1,2}/\d{2,4}))", re.M)
find_matches(expiration_date_regex, text)
def find_matches(regex, text):
matches = regex.findall(text)
for match in matches:
print(match)
我的文字是:
CVS pharmacy
713-217 HsonSt
OTY: 90
REFILL 0 Refills
PRSCBN. A Beil
DATE FILLED 6/23/20
USE BY. 6/23/21
RPH Bill Liu
MFR AUROBINDO PHARM
ST DEA BC2236645
This is a WHITE
REDTME
但我得到的输出是这样的,输出几乎是合理的,但我不明白第一个元组中前两个空字符串的含义是什么?第二个元组的最后两个字符串也是如此。它看起来像位掩码:
('', '', 'DATE FILLED 6/23/20', '6/23/20')
('USE BY. 6/23/21', '6/23/21', '', '')
正在将我的评论转换为答案,以便未来的访问者可以轻松找到解决方案。
您可以使用这个正则表达式:
(?i)(USE\s+BY|DATE\s+FILL(?:ED)?).*(?P<date>\d{1,2}[-/]\d{1,2}[-/]\d{2,4})
正则表达式详细信息:
(?i)
: 启用忽略大小写模式(USE\s+BY|DATE\s+FILL(?:ED)?)
:匹配USE BY
或DATE FILLED
或DATE FILL
.*
:匹配0个或多个任意字符(?P<date>\d{1,2}[-/]\d{1,2}[-/]\d{2,4})
:使用/
或-
作为分隔符匹配日期字符串