使用C#regex获取两个多字符分隔符之间的最短子串
我有
string text = "aa aa value kk 8718764 aa value1 kk kk kk 5178gkjh aathtkhkk";
我想获得aa
和kk
之间的所有文本,预期的结果是:
1 = value 2 = value1 3 = thtkh
我尝试使用"aa(.*?)kk"
正则表达式,但我没有得到预期的结果。
.*?
仍然会在aa
和kk
之间匹配aa
。
使用驯化的贪婪令牌 :
aa((?:(?!aa).)*?)kk ^^^^^^^^^^^^^
要么
aa((?:(?!aa|kk).)*)kk ^^^^^^^^^^^^^^^
请参阅正则表达式演示
细节 :
-
aa
– 一个子字符串 -
((?:(?!aa).)*?)
– 第1组捕获任何零个或多个字符(如果使用RegexOptions.Singleline
选项,甚至包括换行符),它们不会启动aa
子字符串序列,尽可能少 -
kk
– 一个kk
子串
C#代码 :
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() .Select(p => p.Groups[1].Value) .ToList();
- 使用HttpModule进行exception处理
- 如何使用ICLRStrongName :: StrongNameSignatureVerificationEx方法识别延迟签名的程序集
- 将.NET事件暴露给COM?
- 无法加载文件或程序集“Newtonsoft.Json”或其依赖项之一
- 为只读命名管道启用MessageMode时的C#UnauthorizedAccessException(NamedPipeClientStream类)
- 如何在数组.NET驱动程序中的项的属性上创建MongoDB MultiKey索引
- 如何在asp.net中的Lucene.net进行模糊搜索?
- 如何将C#对象拆分为动态类型
- 使用C#/ Linq累积序列的子序列