IntelliJ의 찾기 및 바꾸기 기능을 사용하여 다음 변환을 수행하고 싶습니다.
// Replace this
model.put('foo', 'bar')
// With this
model['foo'] = bar
나는 다음을 시도했다.
찾을 텍스트 model.put\((.*),(.*)\)
:model\[\\1\] = \\2
그러나 IntelliJ를 인식하지 않는 것 \\1
와 \\2
역 참조한다. 또한 단일 슬래시를 시도했지만 작동하지 않습니다.
답변
IntelliJ는 대체 역 참조를 $1
위해 사용 합니다.
IntelliJ의 도움에서 :
정규 표현식 및 구문에 대한 자세한 정보는 java.util.regex 문서를 참조하십시오. 역 참조는 \ n 형식이 아니라 $ n이어야합니다.
답변
즉, 역 참조 를 대체 할 때는 $1
to $n
를 사용해야 합니다. 구문은 검색 내 역 참조 전용입니다.\1
IntelliJ 2016에서 인앱 설명서가 잘못되었습니다. 전체 문서에서 더 나은 인용문은 다음과 같습니다.
현재 정규 표현식 외부의 어딘가에 일치하는 부분 문자열을 참조해야하는 경우 (예 : 다른 정규 표현식의 대체 문자열) 달러 기호 ($ num, 여기서 num = 1..n)를 사용하여 검색 할 수 있습니다.
답변
Idea 9.0 (및 다른 버전)의 정규 표현식에 대한 제품 내 상황 별 도움말이 올바르지 않은 것 같습니다. 이것은 이것을 나타냅니다 :
역 참조 \엔 n 번째 캡처 그룹과 일치하는 내용
그러나 분명히 이전 답변에서 언급했듯이 내 경험으로는 \ n이 아니라 역 참조의 경우 실제로 $ $ n입니다.
“텍스트 바꾸기”대화 상자에서 “일반 표현식”라디오 옵션 옆에있는 ‘[도움말]’링크를 클릭하면 상황에 맞는 도움말을 볼 수 있습니다.
답변
IntelliJ IDEA / 참조 / 정규식 구문 참조
하위 표현식과 일치하고 일치를 기억합니다. 동일한 정규식 내에서 일치하는 하위 문자열을 사용해야하는 경우 역 참조 (\ num, 여기서 num = 1..n)를 사용하여 하위 문자열을 검색 할 수 있습니다. 현재 정규 표현식 외부의 어딘가에 일치하는 부분 문자열을 참조해야하는 경우 (예 : 대체 필드의 다른 정규식) 달러 기호 ($ num, 여기서 num = 1..n)를 사용하여 검색 할 수 있습니다. 하위 표현식에 괄호 문자를 포함해야하는 경우 “(“또는 “)”를 사용하십시오.