Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式捕获可变长度的重复模式_C#_Regex_Regex Lookarounds - Fatal编程技术网

C# 正则表达式捕获可变长度的重复模式

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

我试图准备一个控制台参数的重复模式 运行CommandLineParser(nuget)。我已经完成了一半,但我无法将
secondmatch
作为个人比赛

本质上,我想做的是一个调用的可链接列表

每次调用都应以
-t

我现在的正则表达式
((?=-t)。+(?=-t))|((?=-t)。+)

输入字符串: 当前匹配项:
-t fistarg-tfalsepositive-a wasdf--t secondmatch

-t第三次匹配

预期匹配项:
-t fistarg-tfalsepositive-a wasdf-

-t secondmatch

-tThirdMatch

您可以使用

-t .+?(?=-t |$)

详细信息

  • -t
    -a
    -t
    子字符串
  • +?
    -后跟除换行符以外的任何1+字符的空格(使用
    *?
    匹配0+字符),尽可能少
  • (?=-t |$)
    -一个正向前瞻,确保当前位置右侧有一个
    -t
    子字符串或字符串结尾
您可以使用

-t .+?(?=-t |$)

详细信息

  • -t
    -a
    -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
将修复正则表达式,但在这两个位置。