我正在编写一个标准化批处理文件的工具,我使用正则表达式来验证其中的每个net use
命令。
我被困在为命令提供的目录中。在这种情况下,命令的标准语法是:net use [devicename]: [path] [/user:"\domain\user"] [password] [/persistent:no]
其中[path]
可以包含空格。如果true
必须在引号( "
) 之间,则必须没有引号。用户和密码是可选的。路径可以包含以下特殊字符 ( !
, ,
, +
, .
, -
)。
以下正则表达式允许引号中的路径不带空格,并且不允许路径带有带引号的有序空格或不带空格和引号的路径。正则表达式可能包含语法错误,我在regex101.com上使用 PCRE 对其进行了测试:
Regex pattern = new Regex(@"^net use [a-z]:\s
(?(?=[\S]+\s[\S]+)(""\\\\[\w.\-,!+]+(\s[\w.\-,!+]+)*(\\[\w.\-,!+]+(\s[\w.\-,!+]+)*)*"")|
(\\\\[\w.\-,!+]+(\\[\w.\-,!+]+)*))
(\s\/user:""[a-zA-Z0-9]+(\\[a-zA-Z0-9]+)*"")?\s\/persistent:no$");
正则表达式的必要部分是:
(?(?=[\S]+\s[\S]+)(""\\\\[\w.\-,!+]+(\s[\w.\-,!+]+)*(\\[\w.\-,!+]+(\s[\w.\-,!+]+)*)*"")|
(\\\\[\w.\-,!+]+(\\[\w.\-,!+]+)*))
我如何负担得起反之亦然的表达方式?