C# 如何在visual C中处理Regex.Matches组#

C# 如何在visual C中处理Regex.Matches组#,c#,regex,C#,Regex,我有以下语句,我想提取Video[0]和title[0]的值 String text = "< php $video[0]='aEOqMqVWB5s';$title[0]='www.yahoo.com'; ?>"; String text=“”; 如何使用Regex.Matches和组[0].Value?因此,在本例中,第一组是aeoqvwb5s,第二组是www.yahoo.com 提前感谢。括号将创建您需要的两个组。此外,还必须转义以下字符:$,[,],?你可以用“\”来做这个

我有以下语句,我想提取Video[0]和title[0]的值

String text = "< php $video[0]='aEOqMqVWB5s';$title[0]='www.yahoo.com'; ?>";
String text=“”;
如何使用Regex.Matches和组[0].Value?因此,在本例中,第一组是
aeoqvwb5s
,第二组是
www.yahoo.com


提前感谢。

括号将创建您需要的两个组。此外,还必须转义以下字符:$,[,],?你可以用“\”来做这个。因此,您的正则表达式看起来像:“

您可以使用以下模式:

\$(?:video|title)\[0\]='(.*?)'
示例代码: C#示例:(未经测试,给你一个如何开始的想法)

正则表达式分解: 建议阅读: 以身作则

现场演示:

你在坚持什么?如果你沿着这条路线走,我会让第一组不被捕获,这样你就可以知道哪一组是哪一组。@Rawling,你能详细说明一下吗?没有明白你的意思。好吧,如果你没有捕获输入的
视频|标题
部分,你必须重新分析匹配,以确定
组[1]
中的值是视频字段还是标题字段。如果您捕获它(即取出
?:
),您可以检查
组[1]
以查看它是哪个字段,并检查
组[2]
以获取值。@Rawling,据我所知,
第一组**将是**aEOqMqVWB5s**,而**第二组**将是**www.yahoo.com**
,这取决于
标题
视频
的顺序是否不同。如果发生变化,则应将非捕获更改为捕获。OP似乎对值感兴趣,而不是键,但这取决于它。
MatchCollection mcol = Regex.Matches(inputStr,"\$(?:video|title)\[0\]='(.*?)'");

foreach(Match m in mcol)
{
   Debug.Print(m.ToString());  // See Output Window
   // Here you can use   m.Groups[0].Value   or   m.Groups[1].Value
   // adjust your loop accordingly
}
\$              = looks for `$` character, need to escape since it has a specific meaning for regex enine.
(?:video|title) = match for either word `video` or `title`, Don't capture group.
\[0\]=          = looks for literal `[` followed by `0` ollowed by `]` and `=`.
'(.*?)'         = lazy match for anything enclosed by single quote `()` makes a group here.