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
-第1组捕获不启动((?:(?!aa.)*?)
子字符串序列的任何零个或多个字符(如果使用aa
选项,甚至包括换行符),尽可能少RegexOptions。使用单线
-akk
子字符串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
-akk
子字符串
:
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();