배치 파일을 표준화하는 도구를 프로그래밍하고 정규식을 사용하여 각 net use
명령의 유효성을 검사합니다.C# Regex : net use 명령의 주어진 디렉토리에 공백이 있는지 확인하십시오.
명령에 지정된 디렉토리에서 멈추었습니다. 이 경우 명령의 표준 구문은 이며 [path]
은 공백을 포함 할 수 있습니다. 이 quotationmarks ("
) 사이에 있어야한다 true
경우, 그렇지 않으면 quotationmarks 수없는 것으로합니다. 사용자 및 암호는 선택 사항입니다. 경로에는 다음 특수 문자 (!
, ,
, +
, .
, -
)가 포함될 수 있습니다.
다음 일반 식 는 공백없이 quotationmarks에서 경로 수 있으며 는 허용하지 공백없이 quotationmarks 또는 와 서열 공백이있는 경로을 quotationmarks.
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.\-,!+]+)*))
어떻게 그 반대의 경우도 마찬가지 그것을 할 표현을 감당할 않는 정규식 내가 PCRE와 regex101.com에 그것을 테스트, syntaxerrors를 포함 할 수있다?
공백이있는 표현식은 공백없이 인용 부호로 묶인 경로를 허용합니다 ([link] (https://regex101.com/r/fM2rF5/1)). 이것을 거부 할 수있는 방법이 있습니까? 예를 들어 경로에 적어도 하나의 공백이 있어야하는 조건식을 예로들 수 있습니다. –
@RNGsusCryst는 공백이없는 경로는 따옴표를 사용하는 것이 문제가됩니까? 그럼에도 불구하고 유효한 형식화가 아닌가요? (? <=!) (? : \. \/| \. \. \/| \ /) [^ \ s] + (?! ") (? = \ s) – wpcarro
@RNGsusCryst' s)'이것은 귀하가 귀하의 의견에 묘사 한 경로에만 일치합니다. 이전에 제공 한 링크에서 사용해보십시오. 당신이 어떻게이 모든 것을 결합 할 것인지 잘 모르겠다. – wpcarro