Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.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# 正则表达式忽略.NET中两点之间的所有文本_C#_.net_Regex - Fatal编程技术网

C# 正则表达式忽略.NET中两点之间的所有文本

C# 正则表达式忽略.NET中两点之间的所有文本,c#,.net,regex,C#,.net,Regex,现在开始代码是“abc123”,这是不相关的文本和字符, 可能是新行、换行符、引号等。完成 我想让我的正则表达式找到一个匹配项,其中有以“Start code is”开头的文本,检索引号内的值(在本例中为abc123),但忽略紧跟在结束引号之后的所有值,直到单词“Finish” 因此,如果我有以下文本: 这是一些虚拟文本。现在开始代码是“abc123”,这是 不相关的文本和字符,可能是新行和新行 打断、引用等。结束。这是一些虚拟文本 。。。匹配将成功,我将能够检索abc123的值。这是我真正需要

现在开始代码是“abc123”,这是不相关的文本和字符, 可能是新行、换行符、引号等。完成

我想让我的正则表达式找到一个匹配项,其中有以“Start code is”开头的文本,检索引号内的值(在本例中为abc123),但忽略紧跟在结束引号之后的所有值,直到单词“Finish”

因此,如果我有以下文本:

这是一些虚拟文本。现在开始代码是“abc123”,这是 不相关的文本和字符,可能是新行和新行 打断、引用等。结束。这是一些虚拟文本

。。。匹配将成功,我将能够检索abc123的值。这是我真正需要使用的唯一部分

var matches = Regex.Matches(str, ".*Start code.[^\"]*\"([^\"]*)\"[^\"]*.*Finish\\..*");
if (matches.Count > 0)
{
    result = matches[0].Groups[1];
}

基本上,您只需要检查Regex.Matches的结果。这里使用的唯一“技巧”是,我限制自己在引号之前、引号之间和引号之后查找非引号字符。

您可以将此模式用于lookarounds:

@"(?<=Start code is "")[^""]+(?="")"

您想要什么作为输出?对于
,这是一些伪文本。现在开始代码是“abc123”,这是不相关的文本和字符,可能是新行和换行符、引号等。完成。这是更多的虚拟文本。
string您想要它吗<代码>这是一些伪文本。开始代码是。这是一些更虚假的文本。如果您只需要
abc123
(从您的示例中),为什么要关心
Finish
?在实际的完整场景中,将有多个文本实例以“Start code is”开头,以“Finish1”、“Finish2”等结尾。我希望能够查找其中一个文本块的特定实例(例如,查找末尾有“Finish2”的文本块),因此我希望作为输出的是“abc123”(根据我的示例,尽管每个实例中的值不同)用于关联/匹配的文本块。您需要向我们显示您正在使用的正则表达式,以及您正在使用的C代码(您正在调用
Regex
上的哪个方法?)。您要求的行为是默认情况下得到的--正则表达式通常不关心匹配字符串之前或之后的内容--因此您可能正在专门做一些事情来禁用该默认行为,如果我们能看到你在做什么,我们就能更好地提供帮助。那么,如果出现在开始代码和结束部分之间的内容包含引号,这会不会不起作用?无论我的开始点和结束点之间出现什么字符,有没有办法匹配?在这种情况下,您希望得到什么类型的文本?例如:
Start code是“abc123”now,“Finish”。
输出是什么?abc123?now?输出应该是abc123(或位于该Start/Finish文本块的匹配实例中该位置的任何值)。您是指第一个实例吗?因为在示例中,我同时给出了“abc123”和“now”“在引号之间,在开始/结束之间。我编辑了我的答案,以返回第一个介于引号和开始/结束之间的字符串。
@"Start code is ""([^""]+)"""