2012-07-23 3 views
0

조금만 묻습니다.등록 텍스트 블록 첫 번째 발생 + 마지막 발생 대체

하나의 첫 번째 항목을 취한 문자열과 다른 항목의 마지막 항목을 인용하여 텍스트를 인용해야합니다.

Ex.

[quote] 
Hi to all 
[quote] 
im fine 
[/quote] 
[/quote] 

DIV 안에있는 모든 인용 된 텍스트를 새겨 넣는 것은 싫지만.

String pattern = "\\[quote\\](.*?)\\[\\\quote\\\]"; 
body = body.replaceAll(pattern, "<div class=\"quote\">[quote]$1[/quote]</div>"); 

그것은 작동하지만 정규 표현식 먼저 [견적]에서 걸릴 먼저 DIV 외부 두번째 [/ 견적] 떠나기 [/ 인용] : 그래서 같은 정규 표현식이있다. 내가 원하는 것은 :

<div class="quote"> 
[quote] 
Hi to all 
[quote] 
im fine 
[/quote] 
[/quote] 
</div> 

고마워요.

+1

는'제거'에서'하여가 욕심 확인 *'.? – nhahtdh

+0

더 많은 테스트 케이스 + 예상 출력을 추가하여 질문을 명확히하지 않으면 만족스러운 대답을 줄 수 없을 수도 있습니다. – nhahtdh

+0

[]을 <>로 대체하고 xml 파서를 사용하십시오. – OrangeDog

답변

1

@nhahtdh가 말했듯이 을 제거하고 욕심을 먹고 싶습니다.

비교 :

public static void main(String[] args) { 
    String input = "[quote]\n" 
     + "Hi to all\n" 
     + "[quote]\n" 
     + "im fine\n" 
     + "[/quote]\n" 
     + "[/quote]\n"; 

    System.out.println(input.replaceAll("(?s)\\[quote\\](.*?)\\[/quote]", "<div class=\"quote\">\n[quote]$1[/quote]\n</div>")); 
    System.out.println(); 
    System.out.println(input.replaceAll("(?s)\\[quote\\](.*)\\[/quote]", "<div class=\"quote\">\n[quote]$1[/quote]\n</div>")); 
    } 

출력 :

<div class="quote"> 
[quote] 
Hi to all 
[quote] 
im fine 
[/quote] 
</div> 
[/quote] 


<div class="quote"> 
[quote] 
Hi to all 
[quote] 
im fine 
[/quote] 
[/quote] 
</div> 
관련 문제