2013-06-07 2 views
2
k = 'a bunch of data and then name ""Serpin-ps""'   
print re.search(r'name\s""(\w+)""',k).group(1) 

을 제공합니다 w +를 사용하여 정규식 검색에서 '-'를 포함하십시오. 파이썬

AttributeError: 'NoneType' object has no attribute 'group' 

desired_output = A 있기 때문에 'Serpin-ps'

말이 - 텍스트에 ''.

어쨌든 정규 표현식에 '-'를 다른 모든 영숫자와 함께 사용할 수 있습니까?

답변

5

\w과 같은 미리 설정된 문자 클래스를 명시 적 문자 클래스에 넣을 수 있습니다. 따라서 :

print re.search(r'name\s""([-\w]+)""',k).group(1) 
+0

무엇을 []할까요? 그래서 \ w 앞에 놓인 어떤 문자라도 검색 중에 작동할까요? –

+2

@ draconisthe0ry - "문자 클래스"라고합니다. '[abc123]'은'a','b','c','1','2' 또는'3'과 정확히 일치합니다. (반복은 취소되고 _e.g._'[foobar]'는'o'와 일치하지만 두 개는 일치하지 않습니다.)'\ w'와'\ d'와 같은 특수 문자 클래스를 포함 할 수도 있습니다. '[a-zA-Z0-9]'와 같이 범위를 포함 할 수도 있습니다. 더 자세히 설명하기 위해'\ w +'는'[a-zA-Z0-9 _] +'와 같습니다 (밑줄에주의하십시오). '-'가 문자 클래스 내에서 범위 연산자로 해석되지 않게하려면 리터럴'-'가 문자 클래스의 맨 앞이나 맨 뒤에 나타나야합니다. 그래서'[\ w-]'도 효과가있었습니다. –

+0

굉장해! 내 파일에서 다른 이상한 이름을 발견했습니다.() 그리고 물건. 나는 그것들을 함께 넣었고 효과가있었습니다. 고마워요 만 –

관련 문제