마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

정규식에서 문자 치환할때 pattern만드는 방법

0 추천

 

public static final Pattern emoRegx2 = Pattern.compile("_(.*?)_");
public static final Pattern emoRegx3 = Pattern.compile("([|][|])_(.*?)_([|][|])");   // ( | <---한국 원 표시 위에 있는 글자 입니다.)
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 
String message2 = "_abc_ _def_";
String message3 = "||_abc_|| ||_def_||";
 
Matcher matcher2 = emoRegx2.matcher(message2);
while(matcher2.find()){
message2 = message2.replaceFirst(matcher2.group(0), "<img src=\"emoticon_" + matcher2.group(1) + ".png\">");
}
Log.e("Start","pass 333 : "+message2);
 
 
Matcher matcher3 = emoRegx3.matcher(message3);
while(matcher3.find()){
message3 = message3.replaceFirst(matcher3.group(), "<<<<"+matcher3.group(1)+">>>>");
}
Log.e("  --- ", "message3 : "+message3);

 

}

 

결과 

 

pass 333 : <img src="emoticon_abc.png"> <img src="emoticon_def.png">
 message3 : <<<<||>>>><<<<||>>>>||_abc_|| ||_def_||

pass 333결과는 제대로 나오는데, message3는 결과가 이상합니다.  replasefirst에서 잘못 처리를 한건지 아니면, 정규식을 잘못 만든건지요?

 

동급최강후니 (140 포인트) 님이 2013년 4월 30일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...