【问题标题】:Regex for AMon:1AMon 的正则表达式:1
【发布时间】:2011-04-27 01:56:44
【问题描述】:

我对正则表达式有点垃圾,想知道是否有好心人愿意提供帮助!

格式为:

可选 1、2、A 或 B

日期名称,可能短或完整,例如 周一、周二、周四、周五

冒号:或空格

整数

以下内容有效: 编辑:包括“周一:20”

周一:3,周二:6,AWe:9,2Fr:2,2Wed 3,周五 6,周一:20

以下内容无效:

3Mon:1, Mon3, 3:Wed

我会假设日期名称,我们可以检查 AZ,az 以 Mo,Tu,We,Th,Fr,Sa,Su 开头,以冒号结尾或使用管道并指定每种可能性,即 Mo|Mon|周一|周二|周二|周二|周二等

非常感谢

【问题讨论】:

标签: regex


【解决方案1】:

意识到我需要为

返回 true
TuA:2

这是我目前最终得到的解决方案:

([12AB]?)[: ]*(Mo|Tu|We|Th|Fr|Sa|Su)(\w*)[: ]*(\d)+

这使我可以挑选出领先的 A、B、1、2、Mo、Tu、We... 的日子以及当天之后的内容,上面示例中的“A”或“星期二”的“esday” ",它也返回最后一个数字。

感谢大家让我走上正轨。

【讨论】:

    【解决方案2】:

    这比其他答案更严格地检查星期几:

    /[12AB]?(
        Mon?|
        Tu(es?)?|
        We(d(n(es?)?)?)?|
        Th(u(rs?)?)?|
        Fri?|
        Sa(t(ur?)?)?|
        Sun?
    )(d(ay?)?)?
    [: ]\d+/
    

    【讨论】:

    • 非常感谢。想我刚开始,可以用正则表达式参考来解决这个问题。真的很感激!
    • +1,这有点难看,但却是使用正则表达式的最佳方式。 (您也可以简化一周中每一天的日部分)。
    • 刚刚用几个在线检查器对 AMon:1 和 Mon 1 进行了尝试,返回 False。有什么想法吗?
    • Ps 虽然看起来不错,但如果不是,Mondat 将被视为匹配。最好的排序方法是什么?
    • @Igor:你确定吗?鉴于上述模式的最新版本,我看不出它会如何匹配 - (d(ay?)?)? 部分后面紧跟冒号或空格。
    【解决方案3】:
    [12AB]?(Mo|Tu|We|Th|Fr|Sa|Su)\w*[: ]\d+
    

    【讨论】:

    • 您不需要转义冒号 - 无论是在字符类内部还是外部。
    • 这里 Mon:3 无效,但 AMontagada:3 有效。
    • 非常感谢。想我刚开始,可以用正则表达式参考来解决这个问题。真的很感激!
    猜你喜欢
    • 2014-01-15
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多