[英]Getting string between characters in Regex
我有一个字符串列表,其输出如下
stop = F6, quantity ( 1 ) // stop 0
stop = F8, quantity ( 1 ) // stop 1
stop = BN, quantity ( 1 ) // stop 2
stop = F6, quantity ( 1 ) // stop 3
stop = F8, quantity ( 1 ) // stop 4
stop = BN, quantity ( 1 ) // stop 5
stop = F6, quantity ( 1 ) // stop 6
stop = F8, quantity ( 1 ) // stop 7
stop = SC, quantity ( 1 ) // stop 8
etc
使用foreach循环,我正在检索列表中的每一行,即
`stop = F6, quantity ( 1 ) // stop 0`
但是我只需要字符F6。 我知道在这种情况下我需要使用正则表达式来检索f6,但是我不确定该表达式。 从正则表达式的简短教程中,我尝试使用下面的代码来实现此目标,但运气不好
`Regex.Match(output, @"=\w*,").Value.Replace("\"", "");`
任何帮助,将不胜感激。
您可以使用以下模式:
"=\\s([A-Za-z0-9]{2}),"
//or
"=\\s(\\w+),"
码:
string str = "stop = F6, quantity ( 1 ) ";
var res = Regex.Matches(str, "=\\s([A-Za-z0-9]{2}),")[0].Groups[1].Value;
我对C#不太了解,但是您使用的是正则表达式: "= (\\w+),"
。 该正则表达式可获取=
和,
之间的任何单词/数字。
在正则表达式中,括号之间的表达式称为“捕获组”。 在任何语言中,您都有一些API可以在捕获组中检索内容捕获。 我为C#找到了这个: https : //msdn.microsoft.com/fr-fr/library/system.text.regularexpressions.match.groups(v=vs.110).aspx
因此,用于检索数据的代码如下所示:
String pattern = @"=\\s(\\w+),";
MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
Console.WriteLine("Value : {0}", match.Groups[1].Value);
}
为了实时测试您是否正则表达式, https ://regex101.com/非常有用! 使用它可以直观地查看正则表达式请求在编写时的作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.