[英]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
,因为你不想匹配的yes
或yesonce
如果字符串是yesoncefunction
。
这应该工作:
edit\s*=\s*(yesonce|yes|no)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.