我试图想出一个正则表达式来检查特定的字符串布局

时间:2017-04-18 17:10:02

标签: regex

我有以下字符串:-stage=build并且会有以下变体:

-task=do-command=ls\-ltra-working-directory=\path\to\my\folder

所以我试图提出正则表达式,它能够针对特定阵型检查字符串,如上例所示。

这是我到目前为止所得到的:^-\w+=[A-Za-z]+\\+[A-Za-z]

似乎可以捕获像-stage=hello\rtgh

这样的内容

但我在\之后继续存在问题。我无法检测到tgh位。我怎样才能提高我的正则表达式?

模式一般是:

-(letters with no space)-(letters with no space)=(any letters, numbers, * etc and a literal escape to escape spaces)

1 个答案:

答案 0 :(得分:1)

将评论作为答案发布。

假设在输入中使用反斜杠作为转义符号,-<letters>部分可以是单个或双重,您可以使用

^-[A-Za-z]+(?:-[A-Za-z]+)?=[^\s\\]*(?:\\.[^\s\\]*)*$

请参阅regex demo

<强>详情:

  • ^ - 字符串的开头
  • -[A-Za-z]+ - 连字符,然后是1 + ASCII字母
  • (?:-[A-Za-z]+)? - 连字符和1 + ASCII字母的可选序列
  • = - 等号
  • [^\s\\]* - 除了空格和\
  • 之外的零个或多个字符
  • (?:\\.[^\s\\]*)* - 零个或多个序列:
    • \\. - 任何转义序列(如果使用DOTALL修饰符,.也会匹配换行符)
    • [^\s\\]* - 除了空格和\
    • 之外的零个或多个字符
  • $ - 字符串结束。