我希望每个星期都匹配一个字符串,其中所有单词都以逗号分隔。
实施例: 应该匹配“星期一,星期四,油炸” “mon,tue,sat”应该匹配 “”不应该匹配 应该匹配“星期一,星期二,星期五,星期四,星期五,星期日,星期日” “foo,bar”不应该匹配
我想出了这个正则表达式,但它只匹配包含所有工作日的字符串:
^(mon|tue|wed|thu|fri|sat|sun)$
我如何“独立地”匹配它们?
我正在使用python3
答案 0 :(得分:1)
我没有给你直接答案,而是试着教你钓鱼。
使用交互式正则表达式工具(例如http://pythex.org),首先输入测试字符串,然后迭代正则表达式字符串,直到所有测试字符串都符合您的规范。
我会给你一个暗示,你需要使用捕获组和可能的量词。
互动设施通常有一个"正则表达式备忘单"你可以咨询给你的想法。
祝你的作业好运!
答案 1 :(得分:1)
如果您能够使用较新的 regex
模块,则可以使用recursive approach:
^((?:mon|tue|wed|thu|fri|sat|sun)(?:, )?)(?1)*$'
<小时/> 在
Python
中,这将是:
import regex as re
string = """
mon, tue, fri
mon, tue, sat
mon, tue, wed, thu, fri, sat, sun
foo, bar
mon
tue
wed
mon, wed
"""
rx = re.compile(r'^((?:mon|tue|wed|thu|fri|sat|sun)(?:, )?)(?1)*$')
days = list(filter(lambda x: rx.match(x), string.split("\n")))
print(days)