正则表达式,在引号中查找文件名。 C#

时间:2017-08-14 12:33:21

标签: c# regex

我收到了这个字符串:

  

(" {FAEC7O" 0-207F-765VB3-BF4B-00BCSJ23BC}")=" test"," test \ test.csproj" ," {2943HBS98000CC-FFDD-KD89E-9F84-08923HSB00CCd67}")

我想得到test / test.csproj的结果。如何找到带引号的字符串的这一部分以及最后的.csproj。

2 个答案:

答案 0 :(得分:1)

由于你特别提到了正则表达式,这里有一个经典的正则表达式:

string pattern = @"""[^""]*\.(csproj)""";
Regex reg = new Regex(pattern, RegexOptions.IgnoreCase);
Match match = reg.Match(yourString);
Console.WriteLine(match.Groups[0].Value); // Group[0] is the full match.

如果你问的话,我会解释这个,但说实话,我发现另一个答案更优雅。看起来您正在使用列表,因此首先将其拆分是合适的。 (虽然我的正则表达式的[^“”]部分在某种程度上实现了这一点。)

答案 1 :(得分:0)

您可以执行以下操作,按每个逗号分隔字符串。

("{FAEC7O"0-207F-765VB3-BF4B-00BCSJ23BC}") = "test", "test\test.csproj", "{2943HBS98000CC-FFDD-KD89E-9F84-08923HSB00CCd67}")

在这种情况下,您可以通过索引1来获得您想要的结果:

string str = ("{FAEC7O\"0 - 207F - 765VB3 - BF4B - 00BCSJ23BC}\") = \"test\", \"test\\test.csproj\", \"{2943HBS98000CC-FFDD-KD89E-9F84-08923HSB00CCd67}").Split(',')[1];

index 0: "{FAEC7O"0-207F-765VB3-BF4B-00BCSJ23BC}") = "test",
index 1: "test\test.csproj", 
index 2: "{2943HBS98000CC-FFDD-KD89E-9F84-08923HSB00CCd67}")

与正则表达式的工作方式相同:

var str = Regex.Split(("{FAEC7O\"0 - 207F - 765VB3 - BF4B - 00BCSJ23BC}\") = \"test\", \"test\\test.csproj\", \"{2943HBS98000CC-FFDD-KD89E-9F84-08923HSB00CCd67}"), ",")[1];
祝你好运!