我有
string text = "aa aa value kk 8718764 aa value1 kk kk kk 5178gkjh aathtkhkk";
我希望获得aa
和kk
之间的所有文字,预期结果如下:
1 = value
2 = value1
3 = thtkh
我尝试使用"aa(.*?)kk"
正则表达式,但我没有得到预期的结果。
答案 0 :(得分:1)
.*?
仍然会在aa
和aa
之间与kk
匹配。
aa((?:(?!aa).)*?)kk
^^^^^^^^^^^^^
或
aa((?:(?!aa|kk).)*)kk
^^^^^^^^^^^^^^^
请参阅regex demo
<强>详情:
aa
- aa
子字符串((?:(?!aa).)*?)
- 第1组捕获任何零个或多个字符(如果使用的RegexOptions.Singleline
选项,甚至包括换行符),它们尽可能少地启动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();