c# - 在第一场比赛后停止 Regex positive Lookbehind
问题描述
感谢 Wiktor Stribiżew 回答了我关于从配对大括号中提取数据的第一个问题并指出了重复的问题:Regex to get string between curly brackets
我想做的也是从任意多字符定界符对之间的字符串中提取数据,例如 <= & =>。如果有多个分隔符,那么我只想要最里面的数据对。我已经尝试了 Wiktor 向我展示的示例的变化,但只成功使用了单个字符分隔符,因此再次尝试使用我原来的后向/前瞻解决方案,同样的问题 - 前瞻正确地在第一个匹配时停止,后向仅停止在第一次出现不是第一次匹配。
我已经尝试为额外的大括号添加否定的lookbehinds,并在lookbehind表达式中限制与{1}匹配的数量,但这些都不起作用。我发现了各种关于为正则表达式实现后视的困难以及并非所有正则表达式实现都支持所有功能的评论 - 无论如何,在与 C# (.Net) 正则表达式的第一次匹配之后,是否有后视停止。
以下代码显示了我正在使用的正则表达式以及我的期望和我得到的。
var reg = new Regex(@"(?<=<=).*?(?==>)");
var matched = reg.Matches("I want to get <=data=> between paired <=<=<=delimiters=>=>=>=>");
foreach(var m in matched)
{
Console.WriteLine(m.ToString());
}
我期望的结果是
data
delimiters
我得到的是
data
<=<=delimiters
解决方案
推荐阅读
- graphql - GraphQL 数据建模 - 扩展类型 (Prisma)
- php - 带有模态/ div键的循环数组
- python - 为什么 tf.variable_scope 有一个 default_name 参数?
- android - Android Share Intent 在 5.0 之后无法正常工作,是否有任何替代方案?
- javascript - 引导图像上传器
- sql - 如何避免两次加入同一个维度表
- c# - 从 ASP.NET 3.5 旧版应用程序调用 ASP.NET CORE 网页
- javascript - 前端和后端的 iCalendar 重复事件
- siddhi - Siddhi:增量聚合
- php - php分组重复数组值