2012-12-25 6 views
0

나는 HTML 추출 작업을하고 있으며, 정규 표현식을 사소한 업무로 사용하고 있습니다. 나는 파이썬 re 모듈을 사용하고 있으며 그룹을 정의 할 때 내부 그룹을 반환하지 않도록하고 싶다. 필요하다면 최소한 필요할 것이다.정규식에서 내부 그룹 회피하기

line = u" 07.49 (43 votes) " 

그리고 표현 :

expr = lambda x: re.findall("(\d+(\.\d{1,2})?)\D*(\d+)", x) 

응용 프로그램의 반환은 다음과 같습니다

expr(line) 
[(u'7.49', u'.49', u'43')] 

내가하고 싶은 예를 들어

는 문자열을 고려 결과는 다음과 같습니다.

expr(line) 
[(u'7.49', u'43')] 

숫자의 소수 부분이 나타나지 않을 수 있으므로 (\.\d{1,2})?"(\d+(\.\d{1,2})?)\D*(\d+)"에 정의해야합니다.

이 문제를 방지 할 방법이 있습니까 여분의 그룹?

답변

2

물론입니다. 대신 비 캡처 그룹을 사용하십시오.

(\d+(?:\.\d{1,2})?)\D*(\d+) 
+0

이것은 파이썬 고유의 구문입니까, 아니면 sed, egrep 및 기타 도구에서 유효합니까? – Rubens

+0

@Rubens .. 이것은 Regex에만 해당되며 모든 Regex 도구에 유효합니다. –

+0

와우! 훌륭한! 오랫동안 이것을 찾고있었습니다. D : 고마워요! 그냥 또 다른 질문 : '[^ ...]'을 사용하는 것과 같이 그룹을'무효화 '할 수 있지만'... '을 그룹으로 갖는 것입니까? – Rubens

관련 문제