2009-04-10 2 views
0

사용자 입력을 정규 표현식의 리터럴 값으로 변환하려고 할 때가 있습니다. 나는. 사용자가 C:\Win\Bin\File.txt을 입력하면 정규 표현식은 C:\\Win\\Bin\File.txt과 같을 것입니다. 특정 문자 조합이 이스케이프되어야하기 때문입니다. 누구든지이 작업을 수행하는 코드의 실용적인 부분이나이 작업을 자동으로 수행하는 다른 기술을 알고 있습니까?사용자 입력을 리터럴 정규식으로 바꾸는 코드? (C#)

+0

"C : \ Win \ Bin \ File.txt"및 "C : \ Win \ Bin \ File.txt"예제에서 ... 차이점은 무엇입니까? –

+0

기호 문자를 리터럴 문자로 변환하는 것을 "이스케이프"라고합니다. 필요한 것은 백 슬래시와 같은 기호 문자를 포함 할 수 없도록 사용자 입력을 "이스케이프"하는 것입니다. 기술 환경에 따라이 작업을 수행 할 수있는 방법이 있습니다. – bzlm

답변

3

Regex.Escape()를 시도 했습니까?

예.

var userInputRegex = new Regex(Regex.Escape(userInput));
+0

예, .NET에서 작동합니다. "이것은 정규 표현 엔진이 메타 문자가 아닌 문자를 문자 그대로 해석하도록 지시합니다." – bzlm

+0

+1 좋은 답변이지만, 왜 오늘날 모두 vars를 사용하고 있습니까?! –

+0

시력이 충분하기 때문에 오른쪽의 "새로운 정규 표현식"을 읽을 수 있습니다. 그리고 그들은 리팩토링을 더 쉽게 만들고 싶어하기 때문입니다. 또한 코드가 가독성을 높이기 위해 "무엇"과 "어떻게"를 더 많이 표현하기를 원하기 때문입니다. 문제는 지난 몇년 동안 어디 있었습니까? – bzlm

관련 문제