其他分享
首页 > 其他分享> > 负向超前行为不符合预期

负向超前行为不符合预期

作者:互联网

尝试使用正则表达式从字符串中解析参数:“-a 1 -b -5.1”.

输出应具有2个带有值的标志:标志a的值为1,b标志的-5.1.

当我尝试(-(? 最佳答案

您需要使(?< value>)变得懒惰,并将否定前瞻转变为肯定前瞻.

这是我的尝试:

-(?<flag>[a-zA-Z]) (?<value>.+?)(?=$| -[a-zA-Z])

Demo

说明:

您可能想知道为什么要使用正面的前瞻而不是负面的前瞻.这是因为 ?只要匹配的东西匹配就会停止匹配.这就是为什么我们期待找到$|的原因-[a-zA-Z],如果我们找到一个,停止匹配!

我也将空格字符移出了值组.我假设您不希望该值包含空格?

相关文章

点击查看更多相关文章

转载注明原文:负向超前行为不符合预期 - 代码日志

解决方法:

您需要使(?< value>)变得懒惰,并将否定前瞻转变为肯定前瞻.

这是我的尝试:

-(?<flag>[a-zA-Z]) (?<value>.+?)(?=$| -[a-zA-Z])

Demo

说明:

您可能想知道为什么要使用正面的前瞻而不是负面的前瞻.这是因为 ?只要匹配的东西匹配就会停止匹配.这就是为什么我们期待找到$|的原因-[a-zA-Z],如果我们找到一个,停止匹配!

我也将空格字符移出了值组.我假设您不希望该值包含空格?

标签:regex-lookarounds,c,regex
来源: https://codeday.me/bug/20191025/1925078.html