Skip to main content
 首页 » 编程设计

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

2024年02月04日29xiaohuochai

我正在尝试准备控制台参数的重复模式 通过 CommandLineParser (nuget) 运行。我已经完成了一半,但我无法将 secondmatch 作为个人匹配。

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

每次调用都应该以-t开头

我当前的正则表达式

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

输入字符串:

-t fistarg -tfalsepositive -a wasdf- -t secondmatch -t thirdmatch 

当前比赛:

-t fistarg -tfalsepositive -a wasdf- -t secondmatch

-t 第三场比赛

预期匹配:

-t fistarg -tfalsepositive -a wasdf-

-t secondmatch

-t 第三场比赛

请您参考如下方法:

你可以使用

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

参见 regex demo

详情

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