正则表达式匹配命令行-v/--verbose选项的问题求助
搞定命令行选项匹配:修正正则覆盖含v的短选项与--verbose
你的需求很明确:要精准匹配两类命令行选项——长选项--verbose本身,以及所有包含v的短选项组合(比如-v、-vd、-av、-vvv这类),但当前用的--verbose|-[^-]v正则有漏洞,没法完整覆盖-v、全量的-vvv和-vd。
修正后的正则表达式
--verbose|-[^\s-]*v[^\s-]*
为啥这个正则管用?
拆解一下:
--verbose:直接精准匹配这个长选项,没毛病-:抓短选项的开头标识[^\s-]*:匹配任意数量(包括0个)的非空白、非连字符字符——这就解决了-v(前后没其他字符)、-av(前面带a)、-vd(后面带d)、-vvv(前后都是v)的情况- 中间的
v:确保这个短选项里一定包含你要抓的核心字符 - 末尾的
[^\s-]*:把v后面跟着的其他短选项字符也全匹配上,比如-vvv会被完整命中,不会只截前两个v
验证效果
拿你给的示例测试,这个正则能完美匹配所有目标内容:
- 单独的
-v - 单独的
-vv -vd path -v里的-vd和-v-vd path --version里的-vd--skip-dependencies -vd path --version里的-vd-vd path --verbose里的-vd和--verbose- 单独的
-av - 完整的
-vvv - 单独的
--verbose
内容的提问来源于stack exchange,提问作者syvlorg
相关产品推荐
相关产品推荐

