簡體   English   中英

僅當包含冒號時才使用正則表達式lookbeaind

[英]Regex lookbeaind only when contains colon

今天,我使用c# Regex.IsMatch函數來匹配key:value格式。

我有一些代碼來檢查字符串格式是否為: key:value (例如:H:15)。

我今天使用的Regex模式是: [D,H,M,S]:[1-9] + \\ d?

我要為默認鍵添加什么選項,當輸入為15時 ,我想將其視為: H:15

因此,我需要改進我的Regex以支持key:value僅value (不帶冒號), H:15是好的,而15也很好

我嘗試使用正則表達式條件(|),例如: ([[D,H,M,S]:[1-9] + \\ d?)|([1-9] + \\ d?)

但是現在它匹配更多的想法,例如:1H:01對我來說是不好的輸入。

我嘗試也使用正則表達式背后的成功

任何幫助將不勝感激,

納達夫

好像您想要這樣的東西,

@"^(?:[DHMS]:)?[1-9]\d*$"

[DHMS]匹配給定列表中的單個字符。 ? 在非捕獲組之后,會將關鍵部分變成可選部分。 \\d*匹配零個或多個數字字符。

看起來Avinash擊敗了我,但是我在此表達式中添加了單詞邊界,在測試中效果很好。

\b(?<=[DHMS]:)?[1-9]\d*\b

這應該可以解決問題:

\b(?:[DHMS]:|(?<!:))[1-9][0-9]*\b

演示版

因此,請匹配[DHMS]:或不以:開頭的單詞邊界。

另外, [1-9]+\\d? 在我看來非常可疑,因此我將其替換為[1-9][0-9]* 請注意,.NET \\d 等同於[0-9]因為它也包含Unicode數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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