2012-09-10 2 views
1

특정 문자열을 제외하지만 그들은 내 문제를 알아내는 데 도움이되지 수 :정규 표현식 내가 여기에 몇 가지 게시물을 읽을

특정 문자열을 제외와 장소에 맞게 노력하는 정규 표현식 아래의 "프로필을 읽을 수 있습니다 사진 프로필 사진 ".I는 식의 시작 문자열이 아닌 경우 다른 모든 경우와 일치 싶어" "하지만, 그것은 작동하지 않습니다

re.compile(r"(?!Profile Pictures)</strong></a><div class=\"photoTextSubtitle fsm fwn fcg\">(\d+) photos</div>") 

일치 된 숫자 (\ D +)가 반환되지만,"프로필 그림 "은 여전히 ​​그 중 하나로 계산됩니다. 다른 방법을 시도했지만 그 중 아무 것도 작동하지 않습니다. 그러나 나는 여전히 부정적 예측이 그것을 해결하는 방법이라고 생각합니다. 어떤 아이디어? 감사합니다.

+0

정규식, 어떻게 작동합니까? –

+0

IMO, 질문이 명확하지 않습니다. 견본 입력과 예상되는 결과를주십시오. 또한 올바른지, 접미사 -ve lookaround,'(?!', 접두사 "profile pircture"와 일치 시키려면 사용합니다.)'(?

+0

@ notbad.jpeg 코멘트에있는 일반적인 질문은 당신에게 어떤 대답을 줄지 않을 것입니다 - 왜 a) google b) 당신이 정규식이 무엇인지 모르는 경우 여기에서 특정 질문을하십시오. –

답변

1

당신은 ... 다음에 일치하지 않는 경우 python regex documentation

일치에 따라하는 (?!... 또는 부정적 예측 주장을 사용하고 있습니다. 이것은 부정적인 선견지명이다. 예를 들어, Isaac (?! Asimov)은 'Asimov'가 뒤 따르지 않을 경우에만 'Isaac'과 일치합니다. 당신이 원하는이 경우

부정적인 lookbehind 주장입니다 (?<!...이다. 이것은 앞에 오는 텍스트와 앞에 일치하는 텍스트가 아닌 일치하는 텍스트를 피하려고하기 때문입니다. 정규 표현식의 문서에서 :

문자열의 현재 위치 앞에 일치 항목이없는 경우에 대응합니다. 이것은 네거티브 lookbehind 어설 션이라고합니다. 긍정적 인 lookbehind 어설 션과 마찬가지로 포함 된 패턴은 고정 길이의 문자열과 일치해야합니다. 네거티브 lookbehind 어설 션으로 시작하는 패턴은 검색되는 문자열의 시작 부분에서 일치 할 수 있습니다. 당신이 대신처럼 보였다 정규식을 줄 것

: 물론

re.compile(r"(?<!Profile Pictures)</strong></a><div class=\"photoTextSubtitle fsm fwn fcg\">(\d+) photos</div>") 

, 당신의 몇 가지 예없이이를 테스트하기는 어렵습니다.

+0

예. 죄송합니다. 그것은 부정적인 lookbehind이어야합니다. ?