2013-07-30 3 views
1

다른 패턴과 일치하지 않는 경우에만 패턴과 일치하는 하위 문자열을 대체하려고합니다. 예를 들어, 아래 표시된 코드에서 '% s'을 모두 바꾸고 싶지만 ': % s'은 그대로 둡니다.일치하는 패턴이 다른 패턴과 일치하지 않는 경우에만 일치하는 패턴을 대체하는 방법은 무엇입니까?

String template1 = "Hello:%s"; 
String template2 = "Hello%s"; 

String regex = "[%s&&^[:%s]]"; 

String str = template1.replaceAll(regex, ""); 
System.out.println(str); 

str = template2.replaceAll(regex, ""); 
System.out.println(str); 

출력은해야합니다 : 내 정규식에 뭔가를 놓친 거지

Hello:%s 
Hello 

. 모든 단서? 감사!

String regex = "(?<!:)%s"; 

그것은 바로 전에 :이없는 경우에만 %s 일치 :

답변

7

사용 부정적인 lookbehind이 목표를 달성하기 위해.

+0

'네가티브 lookbehind'응? 작품 ... 덕분에 많이! – Bala

관련 문제