2009-08-26 2 views
1

문자열에서 필드를 가져 와서 반환하려고합니다.ActionScript Regex의 문제점은 무엇입니까?

내 기능 :

public function getSubtype(ut:String):String { 
      var pattern:RegExp = new RegExp("X=(\w+)","i"); 
      var nut:String = ut.replace(pattern, "$1"); 
      trace("nut is " + nut); 
      return nut; 
     } 

나는 그것에게 문자열을 전달 해요 :

http://foo.bar.com/cgi-bin/ds.pl?type=boom&X=country&Y=day&Z=5 

추적 문은 밖으로 수정과 위의 문자열을 반환합니다.

저는 Ryan Swanson의 Flex 3 Regular Expresion Explorer에서 패턴을 시도해 보았습니다 : X = 국가. 결과에 대한 나의 희망은 "나라"입니다.

분명해야하지만 나는 그것을 볼 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.

TB

는 다음에 내 기능을 변경하고 그것을 작동 :

public function getSubtype2(ut:String):String { 
      trace("searching " + ut); 
      var pattern:RegExp = new RegExp("X=([a-z]+)"); 
      var r:Object = pattern.exec(ut); 
      trace("result is " + r[1]); 
      return r[1].toString(); 

흥미롭게도 불구하고, 일치하지 않는 X = (\ + w)를 사용하면 오류가 발생합니다. ???? }

+0

네, 그게 더 좋은 방법입니다. AS가 Java와 같은 경우 다음과 같이 시도해야합니다. 새 RegEx ("X = (\\ w +)", "i"); – PhiLho

+0

어도비 워드 프로세서는 \ w +를 예로 사용하지만. – Todd

+1

* regex 리터럴에서는'/ X = (\ w +) /'하나의 백 슬래시를 사용합니다. RegExp 생성자에 전달하기 위해 * 문자열 * 리터럴로 쓰고 있습니다 :'new RegExp ("X = (\\ w +)")'; 그래서 백 슬래시 두 개를 사용해야합니다. ref : http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/RegExp.html –

답변

1

교체시 대체 방법이 사용됩니다. 주어진 문자열을 수정하려는 경우입니다. 주어진 부분을 자신의 어커런스로 바꾸면 같은 문자열이 생성됩니다. 나는 당신이 match 메소드를 찾고 있다고 생각한다. match 메소드는 아래에서 볼 수있다.

function getSubtype(ut:String):String { 
      var pattern:RegExp = new RegExp("X=([a-z]+)","i"); 
      var nut:Array = ut.match(pattern); 
      trace("nut is " + nut[1]); 
      return nut[1]; 
} 

너트 [0] 등 너트 [1] 첫 번째 괄호 기 뒤에 완전 일치하는 문자열을 beeing는.

+0

또한 \ w가있는 첫 번째 패턴을 따옴표로 묶으려면 \ char을 이스케이프 처리해야합니다. 그렇지 않으면 과 같이 쓰여진 경우에만 작동합니다. var pattern : RegExp =/X = (\ w +) /; – Virusescu

+0

감사합니다. 새로운 언어 학습에 대한 모든 주름 :-) – Todd

0

참고 : 나는뿐만 아니라 캡처를 볼 수있는 가능성이 있는지, 재 탐색기 보인다

가 일치하는 패턴을 반환 ... ActionScript를 모른다.

AS가 대부분의 언어처럼 작동하면 replace() 호출이 X=countrycountry으로 바꿉니다.

1

replace 메소드가 작동하는 문자열을 변경하지 않으면 새 문자열을 반환합니다. 시도 : -

var nut:String = ut.replace(pattern, "$1"); 
+0

방금 ​​제안을 시도했습니다. 불행히도, 여전히 같은 결과. – Todd

0

대신

var pattern:RegExp = new RegExp("X=(\w+)","i"); 

의 본을 작성할 수 있습니다
var pattern:RegExp = /X=(\w+)/i; 

는 그런 다음 백 슬래시 문제가되지 않습니다.

+0

감사. 도움에 감사드립니다. – Todd

관련 문제