Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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#_Regex - Fatal编程技术网

C# 获取两个多字符分隔符之间的最短子字符串

C# 获取两个多字符分隔符之间的最短子字符串,c#,regex,C#,Regex,我有 我想得到aa和kk之间的所有文本,预期结果如下: string text = "aa aa value kk 8718764 aa value1 kk kk kk 5178gkjh aathtkhkk"; 我尝试使用“aa(.*).kk”正则表达式,但没有得到预期的结果。在aa和kk之间,*?仍将匹配aa 使用: 或 见 详细信息: aa-一个aa子字符串 ((?:(?!aa.)*?)-第1组捕获不启动aa子字符串序列的任何零个或多个字符(如果使用RegexOptions。使用单线选项

我有

我想得到
aa
kk
之间的所有文本,预期结果如下:

string text = "aa aa value kk 8718764 aa value1 kk kk kk 5178gkjh aathtkhkk";

我尝试使用
“aa(.*).kk”
正则表达式,但没有得到预期的结果。

aa
kk
之间,
*?
仍将匹配
aa

使用:

详细信息

  • aa
    -一个
    aa
    子字符串
  • ((?:(?!aa.)*?)
    -第1组捕获不启动
    aa
    子字符串序列的任何零个或多个字符(如果使用
    RegexOptions。使用单线
    选项,甚至包括换行符),尽可能少
  • kk
    -a
    kk
    子字符串

:

var re=@“aa((?:(?!aa.))*?)kk”;
var str=“aa aa值kk 8718764 aa值1 kk kk 5178gkjh AATHTKKK”;
var res=Regex.Matches(str,re)
.Cast()
.Select(p=>p.Groups[1]。值)
.ToList();

aa
kk
之间,
*?
仍将匹配
aa

使用:

详细信息

  • aa
    -一个
    aa
    子字符串
  • ((?:(?!aa.)*?)
    -第1组捕获不启动
    aa
    子字符串序列的任何零个或多个字符(如果使用
    RegexOptions。使用单线
    选项,甚至包括换行符),尽可能少
  • kk
    -a
    kk
    子字符串

:

var re=@“aa((?:(?!aa.))*?)kk”;
var str=“aa aa值kk 8718764 aa值1 kk kk 5178gkjh AATHTKKK”;
var res=Regex.Matches(str,re)
.Cast()
.Select(p=>p.Groups[1]。值)
.ToList();

可以解释var re:)这是一个很好的答案,它实际上是分隔符中的一个贪婪标记,我链接到的答案很好地解释了这一点。我在这里也添加了一个简短的解释。是否可以解释var re:)这是一个很好的答案它实际上是分隔符中的一个调和贪婪标记,我链接的答案对此解释得很好。我在这里也添加了一个简短的解释。
1 = value
2 = value1
3 = thtkh
aa((?:(?!aa).)*?)kk
   ^^^^^^^^^^^^^
aa((?:(?!aa|kk).)*)kk
   ^^^^^^^^^^^^^^^
var re = @"aa((?:(?!aa).)*?)kk";
var str = "aa aa value kk 8718764 aa value1 kk kk kk 5178gkjh aathtkhkk"; 
var res = Regex.Matches(str, re)
    .Cast<Match>()
    .Select(p => p.Groups[1].Value)
    .ToList();