사용자 도구

사이트 도구


java:regex

문서의 이전 판입니다!


Java Regular Expression 정규 표현식

Pattern과 Matcher

Pattern 객체는 Thread-Safe하지만, Matcher 객체는 Thread-Safe 하지 않다. 멀티 쓰레드 환경에서 사용시 Matcher 객체를 주의해서 사용해야 한다. Thread-safety with regular expressions in Java

Matcher.appendReplacement() 와 역슬래시(\,backslash) 그리고 $(dolar sign) 문제

Matcher.appendReplacement()를 이용해서 matcher.appendReplacement(sb, “역슬래시 혹은 $가 존재하는 값”);을 실행하면 오류가 발생할 수 있다.

이유는 appendRaplacement() 메소드가 역슬래시와 $를 정규표현식의 특수문자로 취급하기 때문이다.

이와 관련해서는 Matcher.appendReplacement() javadoc 문서에도 언급이 돼 있다.

이문제를 해결하려면, 다음과 같이 역슬래시와 $를 escape해줘야 한다.

String value = valueToReplace.replaceAll("\\\\", "\\\\\\\\").replaceAll("\\$", "\\\\\\$");
matcher.appendReplacement(sb, value);

새줄기호 기준으로 문자열 자르기

String[] splited = str.split("\\r?\\n+");

Java 8 부터는 regex - Split Java String by New Line

String[] splited = str.split("\\R");
java/regex.1455613608.txt.gz · 마지막으로 수정됨: 2016/02/16 17:36 저자 kwon37xi