정규식으로 검색할 수 있는 기능은 sublime text, vscode등의 다른 에디터들에서도 지원한다.
특별하게 IntelliJ에서는 검색된 문자열을 그룹화및 변수화하여 코드 일괄 수정이 필요한 경우 유용한 기능을 제공한다.
다음과 같은 상황을 가정해보자.
어떤 메소드의 시그니처가 변경되었는데, 파라미터 값 하나가 추가 되었다. 그런데 해당 메소드는 프로젝트 내부 호출 위치가 100개가 넘는다. 호출부를 일일이 수정하는 것은 생각만 해도 끔찍하다. 바로 이런 상황에 유용하다.
//Before
instanceName.methodName(instance,"string");
//After
instanceName.methodName(instance,"string", 1);
instanceName.methodName(대소문자가 1글자 이상, character가 한글자 이상)을 정규식으로 표현한다.
instanceName.methodName(([A-Za-z]+), (.+))
정규식 [A-Za-z]+
를 그룹화 하기위해 소괄호로 묶는다.
([A-Za-z]+)
정규식 (.+)
를 그룹화 하기위해 소괄호로 묶는다.
(.+)
달러 사인을 이용해 앞서 그룹화된 정규식을 대입할 수 있다.
instanceName.methodName($1, $2,1)
$1은 [A-Za-z]+
가 대입된 문자열, $2는.+
가 대입된 문자열
맥은 command + R.
끄읕! $기호로 유용한 기능을 만들어준 IntelliJ에게 감사를!