전종필 정규식을 사용함에 있어서 간혹 당혹스럽게 하는 것이 / 문자입니다. 예를 들어서 와 같은 정규식은 어려운 것도 아닌데 사람을 어지럽게 만들어 줍니다. 경로를 구분하는 / 문자가
정규식의 구분자인 /와 같기 때문에 그 앞에 \ 문자를 사용하여 escape시켜주어야 하기 때문에 발생하는 문제입니다. 저렇게 해 놓으니 정말
어려운 정규식 처럼 보이는군요.좀더 간결하게 하고 싶은데... Perl은 아시는 것처럼 ``무지무지 실용적인''언어이기 때문에, 정규식의 구분자인 /를 바꿀 수 있게 해 줍니다. 새로운 예문에서는 // 대신에 m()을 사용합니다.//는 m//, m[], m{}, m(), m!! 등등, 거의 모든 부호를 m자와 함께 사용하여 대체할 수 있습니다. //를 m()로 대체하면 안에 들어가는 내용의 /는 더 이상 특별한 문자가 아니므로 \/ 대신 /를 사용하면 됩니다. 만일 정규식 안에 괄호를 사용해야 한다면 m() 대신에 m{}나 m||(pipe 혹은 or 문자) 등을 사용하면 그만입니다. 이 것은 마치 대신에
처럼 qq//나 qq!! 등을 사용하는 것과 같은 의도입니다.또, 이와 같은 구분자의 선택은 m//뿐 아니라 s///, tr///에서도 똑같이 적용됩니다.
|
Tips in Action > 정규식 >