C# 如何在匹配字符串后读取和提取双引号中的特定句子
我有一个包含大量数据的文件。在该文件中有一个单词描述。我只想读一行描述后的双引号。 例如:说明:“转换规范的字符值无效” 首先我想搜索单词description。然后,我需要读取行“cast规范的无效字符值”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
我该怎么做呢?使用正则表达式,在这种情况下,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:不,*?
是*
的惰性版本,所以它会在第一次遇到:
时停止,而不是在以后出现。