有没有什么方法可以完全反向匹配我使用的正则表达式。在
(?!...)
仅对简单模式有效。我的意思是我有一个正则表达式来匹配多种格式,但我想替换字符串中的所有内容,除了我的多格式。在
例如:我编写了一个复杂的RegEx模式来查找周、日、时、月、年。不必寻找这些匹配项并使用这些模式拆分字符串并连接所有匹配项;如果存在反向匹配,我可以直接替换它。在
How to "inverse match" with regex?中给出的解决方案并不支持所有内容。在
示例
hr = """
Monday: 11:30am - 9:30pm Tuesday: 11:30am - 9:30pm
Wednesday: 11:30am - 10:00pm Thursday: 11:30am - 10:00pm
Friday: 11:30am - 10:30pm Saturday: 11:00am - 10:30pm
(brunch served until 3pm) Sunday: 10:30am - 9:30pm (brunch served until 3pm)
Happy Hour and Special Appetizer menu starting at $3 in the bar. Hours from 4 - 7pm Daily.
$4 BURGER special available on Monday. Wednesday: 1/2 off all bottled wines (4-close)"""
import re
newStr = []
dayPattern = """
(?:mon|tue|wed|thu|fri|sat|sun|thurs)(?:day)?(?:[.:])*
\s*
(?:\d{1,2}(?:[:]\d{1,2})?)\s*(?:[ap][.]?m.?) # Start hour
\s*[-|to]+\s*
(?:\d{1,2}(?:[:]\d{1,2})?)\s*(?:[ap][.]?m.?) # Close hour
"""
newStr.extend(\
re.findall(re.compile(dayPattern, re.VERBOSE|re.IGNORECASE), hr))
print " ".join(newStr)
输出
^{pr2}$但在这里我不见了"Monday: 11:30am - 9:30pm Tuesday: 11:30am - 9:30pm Wednesday: 11:30am - 10:00pm Thursday: 11:30am - 10:00pm Friday: 11:30am - 10:30pm"
。在
我可以修改我的正则表达式来包含这个模式
但是,除了这样做,有没有办法我可以删除除星期一/星期二/。。。。&星期一/星期二/星期三(amp;M)。。。&上午11:00/12:00。。。在
也就是说,我想要的就是这个输出:Monday: 11:30am - 9:30pm Tuesday: 11:30am - 9:30pm Wednesday:
11:30am - 10:00pm Thursday: 11:30am - 10:00pm Friday: 11:30am - 10:30pm
Saturday: 11:00am - 10:30pm Sunday: 10:30am - 9:30pm
我不明白你想做一个反向正则表达式。
findall()
似乎是选择时间的一种自然方式,如下所示:它产生:
^{pr2}$相关问题 更多 >
编程相关推荐