2012-04-18 3 views
0

아래 URL에 대한 정규 표현식 작성을 도와 줄 사람이 있습니까? Regex에서 전체 URL을 일치 시키길 원합니다. URL 형식은 다음과 같습니다.URL의 정규식

https://www.mywebsite.com/us/cgi-bin/binary?cmd=_payment-option&transaction_id=8768JKHKJG19322&account_number=6UN85941RH525783L&transaction_date=Apr 12, 2012&transaction_amount=-$11.00&ccode=USD&act_id=6K6218756F7819322&counterparty=Pretty Flower Florist&initiated_page=_login&go_Ah9w8keNJ8YRLMkAMTS_Izeq0br1CF6OVtGv69WzOo8AjgDgGIiBetMG-lK&Go_Actions

이것은 내가 지금까지 가지고 무엇을하지만 '&'첫 번째

http[s]*:\/\/www.[a-zA-Z0-9.]*mywebsite.[a-zA-Z]*[/]*[a-zA-Z0-9]*[/]*cgi-bin[/]*binary[?]*cmd=[_a-z\-]*[[\&][a-zA-Z0-9_-]*[=][a-z ,A-Z0-9_-]*]*

이 어떻게 패턴 &transaction_id=8768JKHKJG19322을 반복 할 수 있습니다 만까지 일치한다?

[[\&][a-zA-Z0-9_-]*[=][a-z ,A-Z0-9_-]*]*

이 매우 강력한 정규식하지

+2

당신은 아마도 당신이 달성하고자하는 것을 추가하고 싶습니다 ... – Stefan

답변

0

작동하지 않지만, 당신에게 아이디어를 줄 것이다 - 일반적인 패턴을 반복합니다.

http[s]?:\/\/www\.mywebsite\.com(?:\/[a-zA-Z-?=_&\d\s,$\.]+)+ 
0

일부 응답은 (다른 포스터에서 언급했듯이) 달성하려는 목표와 컨텍스트가 명확하지 않기 때문에. 그냥 쿼리 문자열 매개 변수 TRANSACTION_ID의 값을 꺼내려면, 다음이 당신을 위해 일을 할 것입니다 :

[&?]transaction_id=([^&]+) 

당신의 OP, 당신은 괄호를 중첩했다. 괄호는 문자 클래스 전용입니다. 당신은 그들을 중첩시킬 수 없습니다.

대신 괄호를 사용하십시오. 괄호는 중첩 또는 그룹화를 표시하고 프로그램의 match [] 배열에 값을 "캡처"하는 두 가지 용도로 사용됩니다.

쿼리 문자열의 나머지 부분을 인식하는 경우 예 : &counterparty=Pretty Flower Florist과 같이 포함 된 공백을 일치 시켜서는 안됩니다. 공백은 + 또는 % 20으로 인코딩되어야합니다.

업데이트 : 그것은 쿼리 문자열에 대한 규칙의 정확한 재 작성 아니다

([&?]([^=]+)(=([^&]+))?)* 

,하지만 당신은 그것을 사용할 수 있습니다

이 정규식 조각은 입력 URL의 쿼리 문자열 부분을 일치합니다 매개 변수 이름과 값을 캡처합니다. 이 부분

([^=]+) 

매개 변수 이름 및

([^&]+) 

가있는 경우, 매개 변수 값을 캡처이 부분을 캡처합니다.

+0

'& transaction_id = 8768JKHKJG19322'와 같은 문자열과 일치하는 정규 표현식을 작성하고 싶습니다. 이처럼 반복되는 많은 필드가 있습니다. & par1 = value1 & par2 = value2 & par3 = value3. 반복되는 패턴과 일치하는 단일 정규식은 제가 찾고있는 것입니다. – cppcoder