Regex “如何匹配”;命令行参数";用正则表达式设置字符串的样式?

Regex “如何匹配”;命令行参数";用正则表达式设置字符串的样式?,regex,Regex,我试图验证我在一个应用程序中使用的字符串,它的结构基本上与linux命令行参数相同 例如 -m-b-s等 我基本上是在尝试制作模式 开头没有空格,但单词之间允许空格 如果不是第一个-,则在-之前必须有空格 只要符合模式,您可以输入的数量就应该没有限制。例如,这些都可以-m-fd-可选,但这样的东西是不可能的-m-fd测试字符串 我设法做到了^-[a-zA-Z]\s,但我不知道如何重复这一点!这也不适用于长度超过1个字符的标志,并且还存在一些空格问题 要匹配并验证这样一条线,您可以使用 ^-[

我试图验证我在一个应用程序中使用的字符串,它的结构基本上与linux命令行参数相同

例如
-m-b-s

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

  • 开头没有空格,但单词之间允许空格
  • 如果不是第一个
    -
    ,则在
    -
    之前必须有空格
  • 只要符合模式,您可以输入的数量就应该没有限制。例如,这些都可以
    -m-fd-可选
    ,但这样的东西是不可能的<代码>-m-fd测试字符串
我设法做到了
^-[a-zA-Z]\s
,但我不知道如何重复这一点!这也不适用于长度超过1个字符的标志,并且还存在一些空格问题

要匹配并验证这样一条线,您可以使用

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

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

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

详细信息

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

要匹配这样一行,您可以使用
^-[^\s-][^-]*(?:\s-[^\s-][^-]*)*$
进行提取(?@WiktorStribiżew抱歉,我现在才开始测试它。是的!非常感谢!嘿,我发现了其中的一个漏洞。在示例
-m-fd teststring
中,当teststring需要在它前面加一个破折号时,它会匹配。有什么想法吗?:@Borassign可能你想要
^-[^\s-]+(?:\s-[^\s-]+)*$
(?)??