如何修改此正则表达式以使其不匹配'&'在Python中?

时间:2016-01-10 22:31:42

标签: python regex

背景

我想从字符串中提取一条信息。例如,

禁止停车(卫生布鲁姆符号)8-9:30 AM TUES& FRI

因为它只有TUESFRI。这不是一系列的日子,所以我想得到['TUES', 'FRI']

然而,对于像

这样的东西
2 HOUR PARKING 9AM-5PM MON THRU SAT

结果将是一段天数 ['MON', 'TUES', 'WED', 'THURS', 'FRI', 'SAT']

我有这个正则表达式适用于一系列天,但我想修改为除了一个规则。

\b((?:(?:MON|MONDAY|TUES|TUESDAY|WED|WEDNESDAY|THURS|THURSDAY|FRI|FRIDAY|SAT|SATURDAY|SUN|SUNDAY)\s*)+)(?=\s|$)

适用于

NO STANDING 11AM-7AM MON SAT

提取MONSAT。但我不希望它匹配

NO PARKING (SANITATION BROOM SYMBOL) 8-9:30AM TUES & FRI

因为我有另一个我希望它匹配的正则表达式。

1 个答案:

答案 0 :(得分:2)

如果你有很多正则表达式,我会建议按特定顺序运行它们(给它们一个优先级),这样更具体的正则表达式/更重要的正则表达式将首先匹配。这样你可以停止匹配,如果一个正则表达式匹配,在你的情况下是“其他”正则表达式。