在正则表达式

时间:2017-02-27 15:44:10

标签: c# regex string

我有一个字符串列表,其输出位于

之下
      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("\"", "");`

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以使用此模式:

"=\\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;

答案 1 :(得分:1)

我对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/非常有用!使用它可以直观地看到正则表达式请求在您编写时的作用。