如何在python中编写正则表达式以识别字符串中的日期

时间:2019-03-27 21:06:05

标签: python regex search built-in findall

在此分配中,所需的输入采用以下格式:

driver.save_screenshot("./Screenshots/YakeshrajM.png")

Regular或Reward是定制类型的名称。我把这样的字符串分开了。

Regular: 16Mar2009(mon), 17Mar2009(tues), 18Mar2009(wed) ...

Reward: 26Mar2009(thur), 27Mar2009(fri), 28Mar2009(sat)

但是现在我需要在天数列表中计算工作日或周末:

entry_list = input.split(":") #input is a variable  
client = entry_list[0] # only Regular or Reward  
dates = entry_list[1] # only dates  
days = dates.split(",")       

在星期一到星期五时,所有时间都算作工作日,我需要知道输入的工作日数。

坐在太阳下必须算作周末,我需要知道输入的周末是多少。

如何在python中编写正则表达式以在此列表中搜索所有工作日和周末,并对它们进行计数,将工作日和周末的数量放在两个不同的计数器中?

编辑

我编写了此函数,以检查日期是否为写格式,但是它不起作用:

days = [' 16Mar2009(mon)', ' 17Mar2009(tues)', ' 18Mar2009(wed)']    

m只返回None

1 个答案:

答案 0 :(得分:1)

您实际上不需要正则表达式。您可以直接查找“ sat”和“ sun”标签,因为您的日期格式是相同的(例如,没有大写字母,没有“ tue”而不是“ tues”等),因此您无需将其概括为图案。只需遍历列表并查找“ sat”和“ sun”:

import re #if you are using the re

days = [' 16Mar2009(mon)', ' 17Mar2009(tues)', ' 18Mar2009(wed)', ' 18Mar2009(sat)', ' 18Mar2009(sun)']
weekends = 0
weekdays = 0

for day in days:
  if "sat" in day or "sun" in day:  #if re.search( '(sat|sun)', day ): also works
    weekends = weekends+1
  else:
    weekdays = weekdays+1

print(weekends)
print(weekdays)

>>>2
>>>3

如果您需要使用正则表达式(例如,因为这是分配的一部分),则if语句的以下变体将做到这一点:if re.search( '(sat|sun)', day ):这是因为在这种情况下,字符串正则表达式,所以它比仅使用字符串没有太多用处,但是了解如何使用or样式逻辑将多个模式组合到一个正则表达式中非常有用,因此我还在这里。