[英]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?)
但是現在它匹配更多的想法,例如:1和H: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.