자바 정규표현식에서 \ (역슬래시) 표기하기.

자바 정규표현식은 성능은 어쨌든 펄 호환되는 꽤나 쓸만한 정규표현식을 제공한다. 

그런데 한가지 주의할점은 자바 스트링과 정규표현식스트링은 서로 다른 부분이 많다는 것이다. 

대표적인것이 \ 의 표기법이다. 

자바 스트링에서 \를 표기 하기 위해서는 \\ 로 표현한다 

A \ B  => "A \\ B" 

String src = "A \\ B";

하지만 자바정규표현식에서는 좀 다르다. 이것때문에 고생하는 경우가 많기도 한데,
 자바 정규표현식에서 \ 를 나타내는 것은 \\\\ 이다. 4개의 \ 를 연이어 써주어야 한다. 

A \ B => "A \\\\ B" 

Pattern p = Pattern.compile("A \\\\ B");

단순히 여기서 끝나면 좋은데 String에 있는 여러 메소드들이 입력값으로 정규표현스트링을 받아들이는 부분에서 버그가 많이 발생한다. 

String src = "A \\ B \\ C".replaceAll("\\\\"," or");  
assert "A or B or C".equals(src)

이렇게 String.replaceAll등의 메소드는 정규표현식 스트링을 받아들인다는것을 유의해야 한다. 

가끔 정규표현식을 만들다가 이걸 까먹어서 고생하는 경우가 많아서 정리해 보았다. 

by 밀리네스 | 2009/04/13 11:00 | 기술 | 트랙백 | 덧글(4)

트랙백 주소 : http://milines.egloos.com/tb/1894178
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by ☆犬夜叉☆ at 2009/04/13 12:18
전 자바스크립트 정규식은 조금 쓰겠는데
자바쪽은 뭔지 모르게 잘 안 되더군요~ 잘 보고 갑니다.
Commented by 밀리네스 at 2009/04/13 13:01
^^ 펄호환되는 정규식이라면 대부분 비슷하니까 자바쪽도 금방 배우실수 있을겁니다.
Commented by 냉기풀풀 at 2009/06/20 23:54
흠.. 얼마전에 이거 땜에 고생좀 했다.. ㅡㅡ;
Commented by 밀리네스 at 2009/06/22 15:42
나도 저것때문에 자주 고생해서 글 써둔거임 ^^
※ 로그인 사용자만 덧글을 남길 수 있습니다.

◀ 이전 페이지다음 페이지 ▶