繁体   English   中英

如何将“命令行参数”样式字符串与正则表达式匹配?

[英]How to match “command line argument” style strings with regex?

我正在尝试验证我在我的一个应用程序中使用的字符串,它的结构与 linux 命令行 arguments 基本相同。

EG -m -b -s等等...

我基本上是在尝试制作模式;

  • 开头没有空格,但单词之间允许有空格。
  • -如果不是第一个-之前必须有一个空格。
  • 只要符合模式,您可以输入的数量应该没有限制。 例如,这些都可以; -m -fd -optional但不会是这样的; -m-fd teststring

我设法做到了^-[a-zA-Z]\s但我不知道如何重复! 这也不适用于长度超过 1 个字符的标志,并且还有一些空格问题!

要匹配和验证这样的行,您可以使用

^-[^\s-][^-]*(?:\s-[^\s-][^-]*)*$

请参阅正则表达式演示

提取每个选项,您可以使用

(?<!\S)-[^\s-][^-]*

请参阅此正则表达式演示

细节

  • ^ - 字符串的开头
  • - - 一个连字符
  • [^\s-][^-]* - 除了空格和-之外的任何字符,然后是 0 个或更多字符,而不是-
  • (?:\s-[^\s-][^-]*)* - 0 次或多次重复
    • \s - 一个空格
    • - - 一个连字符
    • [^\s-][^-]* - 除了空格和-之外的任何字符,然后是 0 个或更多字符,而不是-
  • $ - 字符串结束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM