C# “可选”之前结束的正则表达式--&引用;或\s
我想弄清楚,如何从文本中抓取两组,如:C# “可选”之前结束的正则表达式--&引用;或\s,c#,regex,C#,Regex,我想弄清楚,如何从文本中抓取两组,如: ---MyValue=4497-DD616-1134-34---\r\n 我想捕获“MyValue”和“4497-DD616-1134-34”。可接受任何字符,但\s字符(\r\n、空格等)和“-”字符至少同时重复2次除外。 我现在的正则表达式: (?<Attribute>[^-\s\r\n]+)=(?<Value>[^-\s\r\n]+) 因此“----”、“\r”、“\n”等字符是可选的。 我在C#中使用正则表达式。 链
---MyValue=4497-DD616-1134-34---\r\n
我想捕获“MyValue”和“4497-DD616-1134-34”。可接受任何字符,但\s字符(\r\n、空格等)和“-”字符至少同时重复2次除外。
我现在的正则表达式:
(?<Attribute>[^-\s\r\n]+)=(?<Value>[^-\s\r\n]+)
因此“----”、“\r”、“\n”等字符是可选的。
我在C#中使用正则表达式。
链接到正则表达式:
有什么想法吗?您可以使用如下正则表达式:
(\w+)=(.*?)(?:\s|--)
另一方面,如果结尾--
是可选的,并且文本\r
和\n
也是可选的,那么您可以使用这个正则表达式:
(\w+)=(.*?)(?:\s|--|\\r|\\n)
您可以使用如下正则表达式:
(\w+)=(.*?)(?:\s|--)
另一方面,如果结尾--
是可选的,并且文本\r
和\n
也是可选的,那么您可以使用这个正则表达式:
(\w+)=(.*?)(?:\s|--|\\r|\\n)
使用
(?<Attribute>\w+)=(?<Value>(?:(?!-{3})\S)+)
看
详细信息:
(?) 使用 看 详细信息:
(?)
显示表达式实际捕获内容的示例。
?捕获组1:(\w+)=(\w+-\w+-\w+-\w+-\w+)
,捕获组2:MyValue
您使用的是什么语言?正则表达式有不同的风格相应地编辑您的问题和标记。OP,请提供一个指向您在图像中显示的正则表达式的链接。显示您的表达式实际捕获的示例。4497-DD616-1134-34
?捕获组1:(\w+)=(\w+-\w+-\w+-\w+)
,捕获组2:MyValue
您使用的是什么语言?正则表达式有不同的风格。如果您的问题和相应的标记。OP,请提供一个指向图像中显示的正则表达式的链接。4497-DD616-1134-34
var pat = @"(?<Attribute>\w+)=(?<Value>(?:(?!-{3})\S)+)"; var s = "---MyValue=4497-DD616-1134-34---\r\n---MyNum=72 MyPercent=17% --- "; var res = Regex.Matches(s, pat) .Cast<Match>() .ToDictionary( m => m.Groups["Attribute"].Value, m => m.Groups["Value"].Value ); foreach (var kvp in res) { Console.WriteLine("[{0}, {1}]", kvp.Key, kvp.Value); }
[MyValue, 4497-DD616-1134-34] [MyNum, 72] [MyPercent, 17%]