2015-01-09 6 views
0

이 질문은 매우 간단한 질문이지만 Regex는 나를 혼란스럽게합니다.Visual Studio에서 Regex 그룹 캡처

나는이 정규식 만들었습니다

DataAt\((.)\) 

DataAt(5) 

을 캡처하고 내가 캡처 그룹에 대한 Find and Replace 상자에서 이것을 시도

DataAt(5).get() 

로 대체하기를 :

DataAt($1).get() 

그러나 그것은 단지는

DataAt($1).get() 

어떻게 원하는 결과를 얻을 수로 변경? 쉬운 질문에 감사와 유감.

+0

어떤 정규식 라이브러리와 어떻게 당신이 그것을 사용하고 있습니다 : 교체

\DataAt\({.}\) 

: 그래서이 경우에이처럼 사용할 것인가? – Galik

+0

Visual Studio – marsh

답변

1

당신이 DataAt 부분을 재현하고자하는 경우 당신은 또한 그룹을 캡처해야합니다 교체

(DataAt)\((.)\) 

다음이 같은 것을 사용 :

$1($2).get() 

가 발생하려면

DataAt(5).get() 

그렇지 않으면 유일한 캡처 그룹이 내부에 있습니다. ().

편집 : 정규식 대체는 Visual Studio에서 수행되는 것으로 확인되었습니다. 캡처 그룹을 정의하는 이전 버전에서는 중괄호 { }을 사용하고 역 참조는 \1, \2 등을 사용해야합니다. 사용중인

DataAt(\1).get() 
+0

@marsh에서 검색 및 바꾸기를 사용하고 있는데,'$ 1' 또는'\ 1'을 사용하는 것이 보통 표준 정규식 대체 변수가 될지라도, 당신이 말하는'대체 상자 '가 확실하지 않습니다. –

+0

대괄호 안에 들어있는 DataAt도 캡처 할 필요가 없습니다. 나는 그것이 당신이해야한다고 말하는 것처럼 보이는 나의 예와 함께 작동하지 않는 이유가 확실하지 않다. – marsh

+0

네, 효과가있었습니다. 하지만이 대체 패턴을 어디에서 사용하고 있습니까? '상자 교체 '에 대해 언급하셨습니까? 나는 네가 말하는 상자를 대체 할 수 있을지 모르지만 백만 가지 가능성이있을 수있다. –