[英]Match first occurrence of a string
字符串示例: Alerts will be silent from 00:00 to 05:00
。 正則表達式必須匹配具有以下nn:nn
格式的任何序列,其中n
是數字。 沒問題, [0-9]{2}:[0-9]{2}
可以完美工作。 但是,目的是分別標識每個序列00:00
和05:00
。 00:00
和05:00
代表小時,我需要分別標識它們的原因是因為必須用相關的小時更新字符串。
以下正則表達式可與05:00
匹配: [0-9]{2}:[0-9]{2}$
。 但是對於第一個序列00:00
,我能夠使其起作用的唯一方法是\\s[0-9]{1,2}:[0-9]{2}\\s
,它與00:00
匹配,但與兩端都有空格。 當然,這不是期望的結果,必須匹配序列而沒有空格。
看來您的問題可以通過其他方式解決,但您僅提供了一些細節。
解決主要問題,主要是:
序列必須匹配,不能有空格
請注意, \\s[0-9]{1,2}:[0-9]{2}\\s
包含\\s
作為使用模式的一部分。 要僅檢查是否存在空格,應使用環視或零寬度斷言 。
(?<=\s)[0-9]{1,2}:[0-9]{2}(?=\s)
在這里, (?<=\\s)
要求在前1或2位數字之前存在空格,但不會占用此空格。 (?=\\s)
正向超前查詢需要在末尾的1或2位數字后出現空白,並且也不消耗。
“消耗”是指匹配的子字符串不屬於返回的匹配值的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.