首页 > 解决方案 > 正则表达式匹配星期四、星期四、星期四、星期四

问题描述

我想要一个正则表达式来匹配部分工作日名称。例如,我想匹配“Thursday”、“thurs”、“thur”或“Thu”。我试过“星期四(rsday)?”,但只匹配“星期四”和“星期四”。匹配缩写工作日的完整正则表达式会过长。我试过这个正则表达式字符串:

周一(日)?|周二(日)?|周三(周二)?|周四(周日)?|周五(日)?|周六(周三)?|周日(日)?

我的字符串如下所示:

12 月 3 日星期一下午 1:00 首映 USPHL Sk3-Red

12 月 4 日 周二 8:10pm U16 USPHL Sk3-Red

12 月 6 日星期四下午 1:00 首映 USPHL Sk3-Red

标签: expressionmatchpartial

解决方案


在 Oracle 中,我会在我想选择字符串与工作日匹配的位置执行此操作。我怀疑您可以调整正则表达式以适应您的环境:

with tbl(str) as (
  select '3-Dec Mon 1:00pm Premiere USPHL Sk3-Red' from dual union all
  select '4-Dec Tues 8:10pm U16 USPHL Sk3-Red' from dual union all
  select '6-Dec Thursday 1:00pm Premiere USPHL Sk3-Red' from dual
)
select str
from tbl
where regexp_like(str, ' (mon|tue(s)?|wed(nes)?|Thu(r)?(s)?|fri|sat(ur)?|sun)(day)? ', 'i');

推荐阅读