C# 如何在visual C中处理Regex.Matches组#
我有以下语句,我想提取Video[0]和title[0]的值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 提前感谢。括号将创建您需要的两个组。此外,还必须转义以下字符:$,[,],?你可以用“\”来做这个
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.