2011-08-21 3 views
2

파이프 문자가 포함 된 PowerShell에서 문자열을 일치시키는 데 문제가 있습니다. 일치는 다음과 같은 경우에 true를 돌려주는 경우는 안 : 나는 경기 인수 파이프 문자를 탈출 시도했다, 그러나 이것은 예상치 못한 결과를 변경하지 않습니다PowerShell 문자열 일치 및 파이프 문자

> "Debug|x86" -match "Debug|x128" 
True 

, 예를 들어,이 :

> "Debug|x86" -match "Debug`|x128" 
True 

답변

5

그것은이다 정규 표현식은 너무 백 슬래시로 이스케이프 할 필요가 없습니다 예를 들어 PowerShell에서의 역 따옴표가 :

> "Debug|x86" -match "Debug\|x128" 
False 

파이프 문자 이스케이프되지 않은 경우 정규 표현식이이기 때문에,이 평가에 "디버그 또는 x128 "입니다.

8

당신이 탈출해야하는 문자 확실하지 않은 경우, 당신을위한 작업 않는 탈출 방법을 보자 : Chibacity와 셰이 모두 적절한 방법을 계시했다

PS > [regex]::escape("Debug|x128") 

Debug\|x128 
+0

+1 좋은 답변입니다. –

1

가에 메타 문자를 탈출을 정규 표현식. 그러나 -match 연산자와 다른 문자열 비교 연산자에 대해 더 자세히 알고 싶다면이 문서가 도움이 될 것입니다 : Harnessing PowerShell's String Comparison and List-Filtering Features. 스칼라 및 배열 컨텍스트에서 다양한 연산자를 열거하는 한 페이지짜리 wallchart가 완성됩니다. 미리보기 : enter image description here