Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在匹配字符串后读取和提取双引号中的特定句子_C#_C# 4.0 - Fatal编程技术网

C# 如何在匹配字符串后读取和提取双引号中的特定句子

C# 如何在匹配字符串后读取和提取双引号中的特定句子,c#,c#-4.0,C#,C# 4.0,我有一个包含大量数据的文件。在该文件中有一个单词描述。我只想读一行描述后的双引号。 例如:说明:“转换规范的字符值无效” 首先我想搜索单词description。然后,我需要读取行“cast规范的无效字符值” 我该怎么做呢?使用正则表达式,在这种情况下,Regex.Match应该可以很好地工作 using System.Text.RegularExpressions; ... public static readonly REGEX_QUOTEFINDER = @"{0}\s*""(?<Q

我有一个包含大量数据的文件。在该文件中有一个单词描述。我只想读一行描述后的双引号。 例如:说明:“转换规范的字符值无效”

首先我想搜索单词description。然后,我需要读取行“cast规范的无效字符值”


我该怎么做呢?

使用正则表达式,在这种情况下,Regex.Match应该可以很好地工作

using System.Text.RegularExpressions;
...
public static readonly REGEX_QUOTEFINDER = @"{0}\s*""(?<QUOTE>([^""]+))""";
public static string ReadQuotedString(string blob, string key)
{
    return Regex.Match(
        blob, 
        string.Format(REGEX_QUOTE, Regex.Escape(key))
    ).Groups["QUOTE"].Value;
}
...
string result = ReadQuotedString(File.ReadAllText("c:/test.txt"), ":Description:");
使用System.Text.regular表达式;
...
公共静态只读REGEX_QUOTEFINDER=@“{0}\s*”(?([^”“]+))”;
公共静态字符串ReadQuotedString(字符串blob,字符串键)
{
return Regex.Match(
水滴,
string.Format(REGEX_QUOTE,REGEX.Escape(key))
).组[“引号”]。值;
}
...
字符串结果=ReadQuotedString(File.ReadAllText(“c:/test.txt”),“:Description:”;
类似于上面的内容可能会起到作用。

var data=@“key:”desc“
var data = @"key:""desc""
key2: ""d2""
key2: ""d2""";

var keyValues = Regex
  .Matches(data, @"^(?<key>.*?): *""(?<value>.*)""", RegexOptions.Multiline)
  .Cast<Match>()
  .Select(m => new{
                   key = m.Groups["key"].Value, 
                   value = m.Groups["value"].Value});

foreach(var kv in keyValues)
{
    Console.WriteLine("{0} : {1}", kv.key, kv.value);
}
键2:“d2” 第2项:“d2”; var keyValues=Regex .Matches(数据,@“^(?.*?:”(?.*)”,RegexOptions.Multiline) .Cast() .选择(m=>new{ key=m.Groups[“key”].值, value=m.Groups[“value”].value}); foreach(关键值中的var kv) { Console.WriteLine(“{0}:{1}”,kv.key,kv.value); }
因此,文件是一行,每行有一个
键:“desc”
?我不清楚这个文件包含什么。描述和文本在同一行、两行、甚至更多行上用双引号括起来?此文件中包含一次还是多次?请给我们一个文件内容的真实例子。这是非常激烈的。我正在试图弄清楚第二个
在这里做什么,
*
不是多余的吗?@Jeff:不,
*?
*
的惰性版本,所以它会在第一次遇到
时停止,而不是在以后出现。