2011-11-09 7 views
2

Javascript 파일에서 괄호 대신 괄호를 사용하는 일부 변수를 변환해야합니다. 예를 들어 MyVariable (i)은 MyVariable [i]이어야합니다.괄호를 대괄호로 바꾸는 정규식

은 내가 찾기를 사용하여이 정규식의 Visual Studio 도구를 바꾸기 :

MyVariable\({(.+)}\) 

및 교체 :

: 같은 경우에

MyVariable\[\1\] 

이 잘 동작

asdas.MyVariable(i+1) 
asdas.MyVariable(i) 
asdas.MyVariable(i).asd 
MyVariable(i+1) 

그러나 마지막 하나는 첫 번째 괄호 라인의 마지막을 이상한 행동을 할

if (parseInt(OtherObject.MyVariable(i+1).Dest.XYZ)==SINK_STATE_TYPE || OtherObject.MyVariable(i).X == "ok") 

같은 경우에 대한 것입니다 작동하지 않습니다. Regex에서 여러 괄호가있는 행으로 작동하게하려면 무엇을 변경해야합니까?

답변

5

당신의 패턴은 욕심이 있습니다. (.+) 부분은 닫는 괄호 ) 문자를 포함하여 모든 문자가 마지막 문자 인 )에 도달 할 때까지 일치합니다. 욕심이 없도록하려면 + 대신 #을 사용할 수 있습니다. 이는 "앞의 표현식이 한 번 이상 일치하고 가능한 한 적은 수의 문자와 일치합니다"를 의미합니다. .NET에서는 보통 .+?과 같이 ?을 배치하지만 Visual Studio 정규식은 다릅니다. 대신 # 메타 문자를 사용합니다.

업데이트 된 패턴이된다 : 또한 ) 문자가 아닌 모든 문자와 일치 [^)]+를 사용할 수 있습니다

MyVariable\({(.#)}\) 

. )을 만나면 일치가 중지됩니다. 이 대체 패턴은 : 당신은 .NET 정규식 맛에 익숙하다면

MyVariable\({([^)]+)}\) 

당신이 찾기를 확장 한 Visual Studio 2010 Productivity Power Tools을, 체크 아웃에 관심이있을 수/닷넷 정규식 맛을 사용할 수 있도록 교체합니다.

관련 문제