2013-05-07 4 views
-1

나는 매우 약하다. regex에 내가 할당 된 작업은 regex이 필요하다고 생각한다. 다음 문자열이 #B#Objectives:#B#We aimed to review how personality characteristics contribute to the onset, maintenance or modulation of.#B#Method:#B#The databases Medline and PsychINFO were examined from 1967 to 2012 to 인 것으로 가정합니다.특정 패턴을 html div로 바꾸기

내 요구 사항은 #B#anystring#B#<div class="format">anystring</div>으로 바꿉니다.

나는 regex이 필요하다고 생각하지만 정규식이 무엇인지 전혀 알지 못합니다.

의견을 보내주십시오.

이 난 그냥 <div class='formated'>#B#은 대체하지만 :#B#가 발견되면 약간의 합병증을 추가해야 사업부의 div.The 끝의 끝을 추가하는이 now.It까지 뭘하려

String regex="#B#"; 
String textFormated = text.replaceAll(regex,"<div class='formated'>"); 
System.out.println(textFormated); 

업데이트 그러나이 두 정규 표현식을 함께 사용하는 방법.

+0

했을 도움이 될 것입니다? 시도한 코드는 무엇입니까? – Howard

답변

2

사용이 :

str = str.replaceAll("#B#(.*?)#B#", "<div class=\"format\">$1</div>"); 

.*?은 주저 규정 자입니다. 이는 다음 문자까지 가능한 한 적은 수의 문자 (0이 될 수 있음)와 일치한다는 것을 의미합니다. #B#.

+0

thnks하지만 @Rakesh Chouhan이 (가) $ 1과 $ 2를 사용하는 것의 차이점은 무엇입니까? – ntstha

+0

숫자는 괄호 안의 표현식 수입니다. $ 0은 전체 일치이고, $ 1은 첫 번째 괄호 서브맵 등입니다. $ 1은 제 경우에 맞지만 $ 2는 @ Rakesh Chouhan의 경우에 맞습니다. 그의 해결책은 정확하지만, # B # 사이에 텍스트가 없으면 # B #가 출력으로갑니다. – Oliv

1

이 코드를 사용해보십시오, 이것은 당신이 이미 무엇을

String givenData ="asdfasdfa#B#anystring#B#asdfasdfasdfas"; 
String pattern = "(#B#)(.+?)(#B#)"; 
String result = givenData.replaceAll(pattern, "<div class='format'>$2</div>"); 
System.out.println(result); 
+1

'# B #'의 캡쳐 그룹은 중복되어 있습니다 ... – nhahtdh

관련 문제