2016-08-31 3 views
0

나는 다음과 같은 코드에서 정규식에 문제가 오전에 우연의 일치 괄호를 탈출 : (.? *)의 두 인스턴스 주위에 작은 따옴표의 경우파이썬은 다시 - 정규식 패턴

import mechanize 
import re 

br = mechanize.Browser() 
br.set_handle_robots(False) 
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 
response = br.open("http://www.gfsc.gg/The-Commission/Pages/Regulated-Entities.aspx?auto_click=1") 

html = response.read() 
br.select_form(nr=0) 
#print br.form 
br.set_all_readonly(False) 
next = re.search(r"""<a href="javascript:__doPostBack('(.*?)','(.*?)')">""",html) 

if next: 
    print 'group(1):', next.group(1) 
    print 'group(2):', next.group(2) 

정규식에서 제거됩니다, 결과는 다음과 같습니다.

group(1): ('ctl00$ctl20$g_af5ce308_e786_4734_ad4c_9829087cffbd$ctl00$gvWebLicensee','Page$2') 
group(2): ('ctl00$ctl20$g_af5ce308_e786_4734_ad4c_9829087cffbd$ctl00$gvWebLicensee' 

이 결과는 적합하지 않습니다. 당신은 그들이 가지고 있기 때문에 괄호 탈출 필요

group(1): ctl00$ctl20$g_af5ce308_e786_4734_ad4c_9829087cffbd$ctl00$gvWebLicensee 
group(2): Page$2 

답변

2

: (1) 및 그룹 (2)처럼 보이도록 괄호 및 따옴표는 (나의 질문) 제거해야 내가 그룹을 싶습니다 특별한 의미 : 이상적으로, 당신은 정규식 HTML을 구문 분석하지 않아야

<a href="javascript:__doPostBack\('(.*?)','(.*?)'\)"> 
          HERE^   HERE^ 

주 (당신의 패턴이 매우 다르며에도 불구하고 나는이 that bad 생각하지 않습니다). 대신 BeautifulSoup과 함께 HTML을 구문 분석하고 a 요소를 찾고 href 속성 값을 가져온 다음 정규식을 사용하여 원하는 부분 문자열을 추출하십시오.

+0

@ chris85 phew, 예, 종류가 잘못되었습니다. :) 감사합니다. – alecxe

+0

고마워, 이제 알 겠어. 내 의도 된 그룹 주변의 괄호는 내가 발견하지 못한 그룹을 만들었습니다. – Astrophe