내 PowerShell 코드에 사용자가 입력 한 문자열을 삽입하는 것을 피할 수있는 경우가 있습니다. 내가 코드를 올바르게 이스케이프 (각각의 인용문을 복제하고, 작은 따옴표로 묶인 문자열을 가진 powershell은 똑똑한 따옴표를 포함하여 5 개의 다른 따옴표 문자를 받아 들인다. 이제는 받아 들일 것이라고 가정하자. 내가 뭘하고 싶은지는 나 문자열이 제대로 이스케이프, 다음과 같이 그렇게 문자열을 따옴표를 두 배로하면됩니다 이스케이프 여부를DOTNET REGEX로 이스케이프 된 따옴표를 올바르게 일치 시키십시오.
hello ' there
hello '' there
이
그러나 3 따옴표 안전하면서 나쁜 (또는 5 영형 R 7 등) 그래서
hello ''' there
는 점에서 더 홀수 작은 따옴표가없는, 또한 내가 문자열 이스케이프 제대로되었는지 확인할 수있는 정규식을 찾기 위해 노력하고있어 너무
위험 또한 나쁜 패턴.
표준 정규식 계산 그룹과 같은 것은 가능하지 않지만 dotnet 캡처 그룹을 사용하면 이런 식으로 작업하기를 바란다.
('\b(?<DEPTH>)|\b'(?<-DEPTH>)|[^']*)*(?(DEPTH)(?!))
하지만 제대로 작동하지 않습니다.
단순히 ''이 가진 '한 대체하지 왜
이 정규식은 두렵고 아름답습니다. 그리고 그것은 작동합니다! – klumsy
여기에 압축 된 버전 ^ (? (D) (? <-D> ') | (?') | [^ '])) ($!) | [^'] *) $ –
klumsy