Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 匹配时隙的正则表达式_Regex - Fatal编程技术网

Regex 匹配时隙的正则表达式

Regex 匹配时隙的正则表达式,regex,Regex,我正在处理带有时间段的患者日日历 每小时分为两个相等的时段。 如果该人员在整个1小时内可用,则表示为11。 如果整小时不可用:00 仅适用于上半年:10。 仅适用于下半年:01 因此,患者的整个日历有48位数字 但现在,为了让事情变得简单,我们假设我们只从早上12点看到早上6点。 所以日历将是[01]{12} 假设患者在凌晨12点到凌晨3点以及凌晨4点到6点都有空。 现在他的日历可以标记为 111111001111 现在医生的日历也以类似的方式存储 现在假设预约窗口固定为1小时,我需要找到所有医

我正在处理带有时间段的患者日日历

每小时分为两个相等的时段。 如果该人员在整个1小时内可用,则表示为11。 如果整小时不可用:00

仅适用于上半年:10。 仅适用于下半年:01

因此,患者的整个日历有48位数字

但现在,为了让事情变得简单,我们假设我们只从早上12点看到早上6点。 所以日历将是[01]{12}

假设患者在凌晨12点到凌晨3点以及凌晨4点到6点都有空。 现在他的日历可以标记为

111111001111

现在医生的日历也以类似的方式存储

现在假设预约窗口固定为1小时,我需要找到所有医生在患者的可用时间段内都有1小时的可用时间段 医生在患者可用时间之外的可用性无关紧要(在这种情况下是凌晨3点到4点)

基本上,我想写一个正则表达式来匹配所有这些


我试过(^([01]{2})(?=(?:[01]{0,2}11))([01]{4})^([01]{8})(?=(?:[01]{0,2}11))([01]{2}))但这是对任何医生的匹配,这些医生在患者的可用时间中没有任何空闲时间,但在早上6点之后也有任何1小时的空闲时间–

以下似乎验证了从上午12点到早上6点的所有时间表,其中医生在中午12点到凌晨3点或凌晨4点到早上6点的时间段中至少有一小时可用:

^(?=(?:[01]{0,4}|[01]{8,10})11)[01]{12}$
在线查看

  • ^
    -起锚线
  • (?=
    -打开正向前瞻:
    • (?:
      -打开非捕获组以写出备选方案:
      • [01]{0,4}
        -断言位置后跟0-4倍的零或一
      • |
        -或:
      • [01]{8,10}
        -断言位置后跟8-10倍的零或一
      • -关闭非捕获组
    • 11
      -字面上匹配表示可用小时数的“11”
    • -关闭正向前瞻
  • [01]{12}
    -匹配零或1,精确匹配12次
  • $
    -结束字符串锚定

以下内容似乎验证了从上午12点到早上6点的所有时间表,在这些时间表中,医生至少有一个小时的可用时间,时间段为上午12点到凌晨3点或凌晨4点到早上6点:

^(?=(?:[01]{0,4}|[01]{8,10})11)[01]{12}$
在线查看

  • ^
    -起锚线
  • (?=
    -打开正向前瞻:
    • (?:
      -打开非捕获组以写出备选方案:
      • [01]{0,4}
        -断言位置后跟0-4倍的零或一
      • |
        -或:
      • [01]{8,10}
        -断言位置后跟8-10倍的零或一
      • -关闭非捕获组
    • 11
      -字面上匹配表示可用小时数的“11”
    • -关闭正向前瞻
  • [01]{12}
    -匹配零或1,精确匹配12次
  • $
    -结束字符串锚定

请分享您的尝试模式。我尝试过(^([01]{2})((?=(?:[01]{0,2}11))([01]{4}){124^([01]{8})(?=(?:[01]{0,2}11))([01]{2})),但这是为任何医生提供的匹配,他们没有任何可用的空闲时间,但早上6点后的任何1小时空闲时间也请将您的尝试包含在实际问题中,以便其他人找到。不是每个人都会查看评论部分。请分享您尝试的模式。我尝试过(^([01]{2})(?=(?:[01]{0,2}11))([01]{4})^([01]{8})(?=(?:[01]{0,2}11))([01]{2}))但这是给任何医生的比赛,谁没有任何空闲时间在病人的可用性,但任何一个1小时的空闲时间后,早上6点也请包括在实际的问题你的尝试,让其他人找到。不是每个人都会看评论部分。谢谢,这似乎很有效。我正在用不同的场景进行测试以确认。只有一个问题。您是如何到达[01]{0,4}以匹配上午12点到凌晨3点之间的时段的。实际上,那里有6个位置正确吗?同样,为什么凌晨4点到达[01]{8,10}6AM@sachintom,那是因为还有“11”的顺序需要考虑。顺便说一句,如果这有效的话。考虑投票和/或接受这个答案。单击向上箭头进行投票和/或单击回答OK左侧的复选标记接受。。知道了。。谢谢我有一个相同问题的扩展。我不需要搜索精确的1小时时间段,而是需要找到在患者时间段内有任意长度(本例中最小30分钟,最大2小时)的医生。那么我们如何相应地修改正则表达式呢。非常感谢!谢谢,这似乎起作用了。我正在用不同的场景进行测试以确认。只有一个问题。您是如何到达[01]{0,4}以匹配上午12点到凌晨3点之间的时段的。实际上,那里有6个位置正确吗?同样,为什么凌晨4点到达[01]{8,10}6AM@sachintom,那是因为还有“11”的顺序需要考虑。顺便说一句,如果这有效的话。考虑投票和/或接受这个答案。单击向上箭头进行投票和/或单击回答OK左侧的复选标记接受。。知道了。。谢谢我有一个相同问题的扩展。我不需要搜索精确的1小时时间段,而是需要找到在患者时间段内有任意长度(本例中最小30分钟,最大2小时)的医生。那么我们如何相应地修改正则表达式呢。非常感谢!