Study/java

[Java] 정규식으로 괄호 안이나 특정 문자 사이 내용 추출, 제거 방법

 

자바로 대괄호, 중괄호와 같은 괄호 사이에 있는 내용을 추출하거나 제거하는 방법입니다.

 

괄호 제거 정규식

단순하게 괄호만 제거하는 방식으로 괄호 속에 있는 내용을 추출하는 방법입니다.

// 괄호 제거
String s1 = "(123234324345)";
String replace1 = s1.replaceAll("[()]", "");
System.out.println("replace1 = " + replace1);

// 중괄호 제거
String s2 = "{123234324345}";
String replace2 = s2.replaceAll("[{}]", "");
System.out.println("replace2 = " + replace2);

// 대괄호 제거
String s3 = "[123234324345]";
String replace3 = s3.replaceAll("[\\[\\]]", "");
System.out.println("replace3 = " + replace3);

괄호 제거 정규식 사용 결과
괄호 제거 정규식 사용 결과

일반 괄호()랑 중괄호{}는 그대로 사용하면 되는데, 대괄호는 정규식에서 사용하는 문자라서 이스케이프 처리(\\)를 해야 합니다.

 

 

 

 

 

 

특정 문자 사이 추출 정규식 

문자열에서 특정 문자 사이에 있는 내용을 추출하는 방법입니다.

String s = "131a4234534a5467";
String extractBetweenA = s.replaceAll(".*?a(.*?)a.*", "$1");
System.out.println("extractBetweenA = " + extractBetweenA);

특정 문자 사이 내용 추출 결과
특정 문자 사이 내용 추출 결과

예제는 소문자 A 사이에 있는 문자열을 추출하는 정규식입니다.

replaceAll 메소드 두번째 매개변수로 사용된 $1는 첫 번째 캡처 그룹을 의미하며, "a" 사이에 있는 문자열만을 남기고 나머지 부분을 제거하게됩니다.

 

괄호 안 문자 제거 정규식

정규식을 사용하여 괄호 안에 있는 문자열을 제거하는 방법입니다.

String s = "1231(23423)4324";
String removeBetweenBrace = s.replaceAll("\\(.*?\\)", "");
System.out.println("removeBetweenBrace = " + removeBetweenBrace);

String removeStringInBrace = s.replaceAll("\\((.*?)\\)", "()");
System.out.println("removeStringInBrace = " + removeStringInBrace);

괄호 안 문자열 제거 결과
괄호 안 문자열 제거 결과

 

괄호도 같이 제거하는 정규식은 단순하지만, 괄호를 제거하지 않는 방식은 조금 다릅니다.

  • \\(와 \\)는 여는 괄호와 닫는 괄호를 의미합니다.
  • (.*?)는 괄호 안의 내용입니다.
  • "()"는 괄호 안의 내용을 빈 문자열로 대체합니다.

 

읽으면 좋은 글

[Java] String - replace, replaceAll : 다른 문자열로 대체

 

[Java] String - replace, replaceAll : 다른 문자열로 대체

replace와 replaceAll은 문자열의 일부를 다른 문자열로 대체해주는 메소드입니다. replace(char oldChar, char newChar)문자열에서 특정 문자를 찾아서 새로운 문자열로 바꿔주는 메소드입니다. String s = "abc

priming.tistory.com