我有以下字符串:-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)
答案 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\\]*
- 除了空格和\
$
- 字符串结束。