假设我有一个文本文件,其中包含以下行。我希望通过匹配(“和”)来获取引号中的两个值,这样我就可以检索ABC和DEF并将它们放入字符串列表或其他内容中,这样做的最佳方法是什么?这太烦人了
如果是EXAMPLEA(“ABC”)和例B(“DEF”)
答案 0 :(得分:0)
假设双引号之间的值不能包含转义双引号的情况可能如下:
var text = "If EXAMPLEA(\"ABC\") AND EXAMPLEB(\"DEF\")";
Regex pattern = new Regex("\"[^\"]*\"");
foreach (Match match in pattern.Matches(text))
{
Console.WriteLine(match.Value.Trim('"'));
}
但这只是你能做到的许多方法中的一种,也许不是最聪明的方法。亲自尝试一下!
答案 1 :(得分:0)
最好的方式......
List<string> matches=Regex.Matches(File.ReadAllText(yourPath),"(?<="")[^""]*(?="")")
.Cast<Match>()
.Select(x=>x.Value)
.ToList();
答案 2 :(得分:0)
这种模式可以解决问题:
\ “([^”] *)\“
string str = "If EXAMPLEA(\"ABC\") AND EXAMPLEB(\"DEF\")";
MatchCollection matched = Regex.Matches(str, @"\""([^\""]*)\""");
foreach (Match match in matched)
{
Console.WriteLine(match.Groups[1].Value);
}
请注意,引号在实际代码中加倍,以便转义它们。并且代码引用组[1]来获得括号内的部分。
答案 3 :(得分:0)
IEnumerable<string> matches =
from Match match
in Regex.Matches(File.ReadAllText(filepath), @"\""([^\""]*)\""")
select match.Groups[1].Value;
其他人已经发布了一些答案,但我考虑到您只想在示例中使用ABC
和DEF
,而不使用引号并将其保存在IEnumerable<string>
中。