C# 正则表达式捕获可变长度的重复模式
我试图准备一个控制台参数的重复模式 运行CommandLineParser(nuget)。我已经完成了一半,但我无法将C# 正则表达式捕获可变长度的重复模式,c#,regex,regex-lookarounds,C#,Regex,Regex Lookarounds,我试图准备一个控制台参数的重复模式 运行CommandLineParser(nuget)。我已经完成了一半,但我无法将secondmatch作为个人比赛 本质上,我想做的是一个调用的可链接列表 每次调用都应以-t 我现在的正则表达式 ((?=-t)。+(?=-t))|((?=-t)。+) 输入字符串: 当前匹配项: -t fistarg-tfalsepositive-a wasdf--t secondmatch -t第三次匹配 预期匹配项: -t fistarg-tfalsepositive-a
secondmatch
作为个人比赛
本质上,我想做的是一个调用的可链接列表
每次调用都应以-t
我现在的正则表达式
((?=-t)。+(?=-t))|((?=-t)。+)
输入字符串:
当前匹配项:
-t fistarg-tfalsepositive-a wasdf--t secondmatch
-t第三次匹配
预期匹配项:
-t fistarg-tfalsepositive-a wasdf-
-t secondmatch
-tThirdMatch
您可以使用
-t .+?(?=-t |$)
见
详细信息
-a-t
子字符串-t
-后跟除换行符以外的任何1+字符的空格(使用+?
匹配0+字符),尽可能少*?
-一个正向前瞻,确保当前位置右侧有一个(?=-t |$)
子字符串或字符串结尾-t
-t .+?(?=-t |$)
见
详细信息
-a-t
子字符串-t
-后跟除换行符以外的任何1+字符的空格(使用+?
匹配0+字符),尽可能少*?
-一个正向前瞻,确保当前位置右侧有一个(?=-t |$)
子字符串或字符串结尾-t
(?=-t)。+?(?=-t |$)
?@WiktorStribiżew是的-回答:)@WiktorStribiżew我一直认为。+相当于。*?你能告诉我使用+有什么区别吗?如果至少有一个字符,请使用+?
。否则,使用*?
也许(?=-t)。+(?=-t |$)
?@WiktorStribiżew是-回答:)@WiktorStribiżew我一直认为。+等同于。*?你能告诉我使用+有什么区别吗?如果至少有一个字符,请使用+?
。否则,请使用*?
纯粹出于好奇,是否有任何理由使用RegexStorm而不是传统的Regex101?@Paul Etienne这是一个与C#相关的问题,Regex101不支持.NET。尽管此模式在PCRE、JS和Python中的工作方式非常相似,但RegexStorm更好地证明了此模式可以与.NET正则表达式引擎一起工作。如果-t xxxx-t xxxx
应该是一个匹配项,则正则表达式将失败。伙计们,如果-t
必须作为“整词”匹配,只需在-t
之前添加\B
,@“\B-t.+?(?=-t |$)”
\B
将修复正则表达式,但在这两个地方都是如此。纯粹出于好奇,您使用RegexStorm而不是传统的Regex101有什么原因吗?@Paul Etienne这是一个与C有关的问题,Regex101不支持.NET。尽管此模式在PCRE、JS和Python中的工作方式非常相似,但RegexStorm更好地证明了此模式可以与.NET正则表达式引擎一起工作。如果-t xxxx-t xxxx
应该是一个匹配项,则正则表达式将失败。伙计们,如果-t
必须作为“整词”匹配,只需在-t
之前添加\B
,@“\B-t.+?(?=-t |$)”
\B
将修复正则表达式,但在这两个位置。