내가 일치하도록 노력하고 있어요 (일치하지 않는) \ "\ b를 w +"문자열 내에서 "응용 프로그램 : 태그 \ nPrefix 검색이나 텍스트 :"안드로이드 패턴 매칭
코드는 다음과 같습니다
String s = "Search\nPrefix with tag: app: or text:";
SpannableString str = SpannableString.valueOf(s);
Pattern regex = Pattern.compile("\\b\\w+:");
Matcher m = regex.matcher(str);
while(m.find()) {
// do stuff
}
이클립스에서 디버거로 코드를 따라 갔고 while 루프가 입력되지 않았습니다. 즉, m.find()는 false를 반환합니다. 내가 바로?는 문자열에서 같은 명시 적 텍스트입니다, 그것은 작동한다 간단
Pattern regex = Pattern.compile("app:");
에 정규식을 변경했습니다. 그러나 여전히 일치가 없습니다. 문자열의 개행 문자에 도달하면 정규식 일치가 중지되는 것으로 생각됩니다. 그리고 어쨌든 matcher가 전체 문자열을 스캔하도록 알려주는 깃발이나 무언가가 있어야합니다.
정상적으로 작동해야합니다. 어쩌면'SpannableString'을 좋아하지 않을 것입니다.'Matcher m = regex.matcher (s);' – zapl
그냥 문자열을 시도했는데 똑같습니다. 나는 spannable을 필요로한다. 왜냐하면 나는 match를 color하고 싶기 때문에, m.find()마다 m.start()와 m.end()가 필요하다. – ilomambo
내 실수. 나는 여기에 그것을 보여주기 위해 코드를 단순화 시켰지만, 실제로 while 조건은 m.find() && --count> 0이고 count가 원인이었다. 정규식은 괜찮 았어. 결론은 : "일하기가 너무 힘들면 잠자 요." – ilomambo