簡體   English   中英

匹配字符串的首次出現

[英]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:0005:00 00:0005: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM