2011-02-01 3 views
3

RegEx를 사용하여 패턴 내의 패턴을 찾으려고합니다. 특히 내가하고 싶은 것은 참조로 URL을 캡처하고 그 안에 마지막 = 기호 다음에 나오는 모든 것을 검색하여 캡처하는 것입니다. 캡처 된 그룹을 볼 때 나는 (실제 문자열을 구문 분석 할 수 거기에서 href="(https?[^"]*)"RegEx : 패턴 내의 패턴 일치 - 긍정적 인 Lookbehind를 사용해야합니까?

:

은 그래서 처음에이 정규식을 사용하여

href="http://my.domain.com/?s_cid=EM&s_ev9=CMC21892&s_ev10=EM_CMC21892_LC_stuff" 

을 찾을 것

<a href="http://my.domain.com/?s_cid=EM&s_ev9=CMC21892&s_ev10=EM_CMC21892_LC_stuff" style="color: #365EBF:">stuff</a> 

이 캐릭터에게 주어진) 이것으로 EM_CMC21892_LC_stuff을 찾고 있습니다 : =[^"=]*$

하나의 RegEx에서 두 가지를 결합하려고 시도했지만 성공하지 못했습니다.

의견이 있으십니까?

+1

왜 정규 표현식을 사용 하시겠습니까? 사용중인 언어에 HTML 구문 분석 라이브러리 또는 URL 구문 분석 라이브러리가 있습니까? –

+0

음, 정규 표현식을 사용하는 것이 더 낫도록 노력하고 있으므로 가능한지 알고 싶습니다. 다른 이유는 언어 (RealStudio)가 처리 할 구문 분석 라이브러리를 가지고 있는지 확실하지 않기 때문입니다. 이것은 내가 과거에 해왔 던 일에 대한 업데이트이며 다른 요인들과 발견 된 패턴을 기반으로 한 이상한 찾기/바꾸기를하며 RegEx가 내 최선의 선택이었습니다. – dscl

+0

네, 물론 가능합니다. 모든 것이 가능하지만 모든 것이 편리하지는 않습니다. – tchrist

답변

0

HTML을 구문 분석하기 위해 정규 표현식을 사용하면 문제가 생길뿐입니다.

그런데 시도해보십시오. href="http[^"]+=([^"]+?)".

+0

아니요, 문제를 묻지 않고 * 심각한 * 교육을 요구합니다. ☺ – tchrist

0

내가 대신 정규식의 기존 HTML/URL 파싱 함수를 사용하는 방법에 대한 마크 Byer의 의견에 동의 (우리가 정말에 도움이되지 수있는 당신이 그렇게 사용하는 언어를 지정하지 않았지만 ...)

/href="([^"]*=([^"]*))"/ 

편집 추가 : 당신이 그것을 정규식 방법으로 일을 주장하는 경우, 여기에 패턴이 여기 결과는 것처럼 보이는 것입니다, 당신은 여전히 ​​전체 URL을 캡처하기를 원한다면 확실하지 않았다 또는 단지 마지막 param 값이지만이 패턴은 다음 두 가지를 모두 캡처합니다.

Array 
(
    [0] => Array 
     (
      [0] => href="http://my.domain.com/?s_cid=EM&s_ev9=CMC21892&s_ev10=EM_CMC21892_LC_stuff" 
     ) 

    [1] => Array 
     (
      [0] => http://my.domain.com/?s_cid=EM&s_ev9=CMC21892&s_ev10=EM_CMC21892_LC_stuff 
     ) 

    [2] => Array 
     (
      [0] => EM_CMC21892_LC_stuff 
     ) 

)