2009-10-16 3 views
11

파이썬. r^[\ w *] $정규식에서 w *는 무엇을 의미합니까?

그게 무슨 뜻이야?

+1

당신이'R을 "^ \ *의 $ w"'의미합니까 ? –

+0

Laurence의 의견에 따르면, 이것은 따옴표없이 특별한 의미가 없습니다. – foosion

+0

안녕하세요. S.Lott : 숙제인지 어떻게 알 수 있습니까? –

답변

36

빠른 대답 : 일치하는 문자가 숫자 (문자, 숫자) 밑줄 (_) 또는 별표 (*)를 단일 문자로 구성된 문자열입니다.

세부 사항 :

  • 는 "\w는"일반적으로 숫자 (대소 문자에 관계없이 문자, 숫자 등)를 의미한다 "모든 단어 문자"플러스 밑줄 (_)
  • 은 "^" "을 의미한다 앵커 "와"$ ""앵커 "문자열의 끝에,이 경우 일치 항목은 문자열의 시작 부분에서 시작하여 문자열의 끝에서 끝나야 함을 의미합니다 .
  • []은 "문자 클래스에 포함 된 모든 문자와 일치"하는 문자 클래스를 의미합니다.

문자열은 특별한 표기가 파이썬 때문에 매우 어려운, (모든 백 슬래시 추가 백 슬래시로 이스케이프 될 필요가있을 것이다) 정규 표현식을 입력 할 수 있도록하는 것도 그 정상 언급 인용과 규칙을 탈출 가치가있는 모든 백 슬래시를 올바르게 해석 할 수있는 자체 특별 인용 규칙이 있으며 그 시작 부분에있는 "r"이 사용됩니다.

참고 :는 일반적으로 별표 (*)는 "0 또는 이전 것보다"를 의미하지만, 별표 (*)는 문자 클래스의 내부 때문에 위의 예에서는, 하지 그 의미를 가지고있다 그래서 그것은 그것의 "특별한 - 다움"을 잃는다.

Python의 정규식에 대한 자세한 내용은 re module, 정규 표현식 HOWTO입니다.

+0

이것은 necroposting이지만 이후의 독자를 위해서 \ w는 [^ a-zA-Z0-9_] 클래스의 python에 해당합니다. 여기에서 볼 수 있듯이 적어도 Python 2.7.x에서 3.4.y까지,'*'는 그것에 들어 가지 않습니다. 정규 표현식 클래스를 사용하면 [\ w *]는 리터럴 caracter로서 *의 쓸데없는 반복을 도입합니다 (즉, 클래스를 나타내는 대괄호 안에 포함되어 있으므로 특별한 의미가 없습니다). – Cbhihe

+0

Python 3에서'\ w'의 정의는 기본적으로 유니 코드 문자 정의를 고려하므로'[^ a-zA-Z0-9_]'보다 훨씬 넓습니다. 자세한 내용은 https://docs.python.org/3/library/re.html#module-re를 참조하십시오. – Bevan

0

\ w는 0 자 이상의 영숫자와 밑줄을 나타냅니다. 귀하의 경우에 *는 문자 클래스 안에도, 그래서 [\ * ▼] [A-ZA-Z0-9_ *]의 모든 일치하는 것이다은을 참조하십시오 http://www.regular-expressions.info/reference.html

을합니다 (* 문자 그대로 해석됩니다) 인용문 :

\ d, \ w 및 \ s - 숫자, 단어 문자 및 공백과 일치하는 속기 문자 클래스. 캐릭터 클래스의 내부 및 외부에서 사용할 수 있습니다.

편집은 동일합니다 승 \ [A-ZA는-Z0-9_] 내가 후 * 또는 [] 주위 \을하기 때문에 이해가 안

+0

위의 정규 표현식에 없습니다. '*'는 문자 클래스 내에 있기 때문에 클래스의 멤버가됩니다. –

0

주석에 대한 응답으로 수정 w는 이미 클래스이고 class 정의의 *는 의미가 없습니다.

1

exhuma가 말했듯이, \ w는 모든 단어 수준의 문자 (영숫자 인 Jonathan이 분명히 함)입니다. 이 대괄호에 있기 때문에

그러나이 일치합니다 :

  1. 하나의 영숫자 문자 또는
  2. 별표 (*)

그래서 전체 정규 표현식과 일치 :

  • 시작 부분은 줄입니다. (^)
  • 하나의 영숫자 문자 또는 라인 ($)

의 말 뒤에 별표

  • 중 다음는
  • 그래서 다음과 일치합니다 :

    blah 
    z <- matches this line 
    blah 
    

    또는

    blah 
    * <- matches this line 
    blah 
    
  • 0

    위의 \ w는 모든 단어를 의미합니다. 그래서 당신은 매개 변수 "= URL"당신은의 값으로 단어를 가질 수 있습니다 의미 아래

    view.aspx?url=[\w] 
    

    의 맥락에서이를 사용할 수

    +0

    \ w는 전체 단어가 아닌 단일 문자와 일치합니다. 실제로 전체 단어 (즉, 단일 문자 이상)를 일치 시키려면 +, * 또는 {n, m}과 같은 수량 기호가 필요합니다. –

    관련 문제