簡體   English   中英

C#正則表達式匹配鍵值對

[英]c# Regex to match key value pairs

給定以下字符串

[ef:id =tellMeMore4, edit= yes, req=true,prompt = false]

我試圖匹配編輯鍵和值,其中值可以是,是一次或否。

edit\s*=\s*(yes(once)?|no)

我回來了3組:

{edit= yes}
{yes}
{}

有沒有一種方法可以滿足我的要求,但沒有一個可選的once值分組?

我試過了,但在所有差異上均不正確:

edit\s*=\s*(yes[once]?|no)

要指定您不需要捕獲組,請使用稱為非捕獲組(?: ... )構造:

edit\s*=\s*(yes(?:once)?|no)

根據經驗,除非需要捕獲,否則始終使用(?: ... )構造而不是( ... )構造。

另一種方法是將命名組與RegexOptions.ExplicitCapture標志一起使用:

edit\s*=\s*(?<value>yes(once)?|no)

當然,您可以結合使用這兩種方法,因此不需要標志,但可以保留命名的捕獲:

edit\s*=\s*(?<value>yes(?:once)?|no)

使用match.Groups["value"].Value提取match.Groups["value"].Value

嘗試這個:

edit\s*=\s*\b(yesonce|yes|no)\b

你也應該使用\\b ,因為你不想匹配的yesyesonce如果字符串是yesoncefunction

這應該工作:

 edit\s*=\s*(yesonce|yes|no)

暫無
暫無

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

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