정규식에서 슬래시 이스케이프
내 질문은 간단한 질문이며 정규 표현식 이스케이프에 관한 것입니다. /
정규식에서 슬래시를 이스케이프해야 합니까? 그리고 어떻게 하시겠습니까?
어떤 맥락 / 언어? 일부 언어 /
는 패턴 구분 기호 로 사용 되므로 예, 어떤 언어 / 컨텍스트에 따라 이스케이프해야합니다. 그 앞에 백 슬래시를 넣어 이스케이프합니다. \/
일부 언어 (예 : PHP)의 경우 다른 문자를 구분 기호로 사용할 수 있으므로 이스케이프 할 필요가 없습니다. 그러나 AFAIK는 모든 언어에서 유일하게 특별한 의미 /
는 지정된 패턴 구분 기호 일 수 있다는 것입니다.
다음은 몇 가지 옵션입니다.
Perl에서는 대체 구분 기호를 선택할 수 있습니다. 당신은에 국한되지 않습니다
m//
. 같은 다른 것을 선택할 수 있습니다m{}
. 그런 다음 탈출이 필요하지 않습니다. 사실 "Perl Best Practices"의 Damian Conway는 이것이 사용해야m{}
하는 유일한 대체 구분 기호라고 주장하며 이는 Perl :: Critic (CPAN에서)에 의해 강화됩니다. 당신은 대체 구분 문자의 다양한 사용하여 멀리 얻을 수 있지만//
및{}
나중에 해독 깨끗한 것 같다. 그러나 이러한 선택 중 하나가 너무 많이 이스케이프되는 경우 가독성에 가장 적합한 것을 선택하십시오. 일반적인 예는m(...)
,m[...]
및m!...!
입니다.대체 구분 기호를 사용할 수 없거나 사용하지 않으려는 경우 백 슬래시로 슬래시를 이스케이프 할 수 있습니다.
m/\/[^/]+$/
예를 들어 (가 될 수있는 대체 구분 기호를 사용하여m{/[^/]+$}
더 명확하게 읽을 수 있습니다). 백 슬래시로 슬래시를 피하는 것은 이름과 위키피디아 페이지 인 Leaning Toothpick Syndrome 을 얻을 수있을만큼 일반적 입니다. 단 하나의 인스턴스 만있는 정규식에서 슬래시를 이스케이프하는 것은 가독성을 저해하는 수준으로 올라가지 않을 수 있지만, 손에서 벗어나기 시작하고 언어가 Perl처럼 대체 구분 기호를 허용하는 경우 선호하는 솔루션입니다.
백 슬래시를 사용 \
하거나 다른 구분 기호를 선택하십시오. 즉 m#.\d#
, /.\d/
"Perl에서 / 정규식 구분 기호 앞에 문자 m (일치의 경우)을 추가하면 거의 모든 특수 문자로 변경할 수 있습니다."
구분 기호가 /이면 이스케이프해야합니다.
C #을 사용하는 경우에는 이스케이프 할 필요가 없습니다.
참고 URL : https://stackoverflow.com/questions/6076229/escaping-a-forward-slash-in-a-regular-expression
'Programing' 카테고리의 다른 글
ViewData와 TempData의 차이점은 무엇입니까? (0) | 2020.08.30 |
---|---|
CSS 선택기에서 별표 (*)는 무엇을합니까? (0) | 2020.08.30 |
JAVA_HOME이 JDK 또는 JRE를 가리켜 야합니까? (0) | 2020.08.30 |
사용자가 그것에 초점을 맞추기 전에 TextInputLayout에 EditText 힌트가 표시되지 않음 (0) | 2020.08.30 |
Curry-Howard Isomorphism에서 발생하는 가장 흥미로운 등가물은 무엇입니까? (0) | 2020.08.30 |