2012-05-25 5 views
0

다음 정규식은 무엇을합니까? 위의 정규식의다음 정규식은 무엇을합니까?

[\w+\-.]+ 

출력, \ w + -. +와 \ + \ w -. +는 동일하지만 나는 이유를 이해 할 수없는 무엇입니까?

테스트 문자열

sadkfj-dslk.sdjklf!sdljf 

당신이 나에게 설명 할 수 있습니까?

답변

3

백 슬래시가 불필요하기 때문에 동일합니다. 실제로 유효한 문자 범위를 나타내지 않으면 (+-.은 문자 범위가 아닙니다) -을 이스케이프 할 필요가 없습니다. 어쨌든 상관없이 리터럴 대시로 처리됩니다. \w (단어 문자), + (더하기 기호), - (대시) 또는 . (기간) :

주어진 정규 표현식은 하나 또는 그 이상의 이러한 문자의 찾습니다. - 이전의 백 슬래시는 불필요하므로 포함 시킬지 여부는 아무런 차이가 없습니다.

2

대괄호 안의 하이픈은 특별한 의미 ("범위")를 가지고 있으므로 리터럴 하이픈은 \-으로 이스케이프되어야합니다. 그러나 특정 정규식 엔진에 따라 이스케이프 처리되지 않은 구문을 사용하지 않을 수 있습니다.이 특별한 경우에는 모호성이 없기 때문입니다.

(예를 들어, 펄은 두 버전을 적용하고 예상 결과를 생성하지만, use warnings;으로 누락 된 백 슬래시에 대해 불평 할 것입니다.)

1

이는 '단어 문자'[0-9A-ZA-Z_ 일치 ] (\ w는 단어 문자와 일치 함), OR a + 문자 또는 하이픈 (\을 이스케이프 함 -) 또는 전체 중지 (이 모든 것이 두 번 이상 반복되는 경우).

공백이 없으면 일반 문자, 밑줄, plusses, 하이픈 또는 전체 중지를 포함하는 모든 문자열을 의미합니다. 간단히 말해서, 이것은 데이터베이스 항목을 찾기 위해 URL에서 문자열을 식별하는 기능입니다.

"+ to."와 일치하는 문자가 없기 때문에 이스케이프 처리가 필요하지 않으므로 아무런 차이가 없습니다. 따라서 이스케이프 처리되거나 이스케이프 처리되지 않으므로 아무런 차이가 없습니다.

+0

고마워요, 고쳐주세요. – Death