2012-04-19 3 views
0

Я пытаюсь соответствовать «\ Ь \ ш +:» внутри строки «Поиск \ nPrefix с тегом: приложение: или текст:»Android соответствие шаблону (не соответствует)

код выглядит следующим образом:

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 
} 

Я следовал за кодом с отладчиком, в Eclipse, и цикл while никогда не вводился, то есть m.find() возвращает false. Я попытался изменить регулярное выражение незамысловатых

Pattern regex = Pattern.compile("app:"); 

Он должен работать, правильно ?, это же явный текст из строки. Но по-прежнему нет никакого матча. Я подозреваю, что совпадчик перестает соответствовать, когда он достигает строки новой строки в строке. И каким-то образом должен быть флаг или что-то, что может сказать совпадению для сканирования всей строки.

+0

Должен работать так, как есть. Может быть, это не нравится 'SpannableString', попробуйте' Matcher m = regex.matcher (s); ' – zapl

+0

Просто, чтобы убедиться, я попробовал строку, и это то же самое. Мне нужно, хотя spannable, потому что я хочу покрасить совпадения, и мне нужно m.start() & m.end() для каждого m.find(), чтобы сделать это. – ilomambo

+1

Моя ошибка, снова. Я упростил код, чтобы показать его здесь, но на практике условием while было m.find() && --count> 0, и счет был виновником. Регулярное выражение было в порядке. Вывод: «Ложитесь спать, если вы слишком устали работать». – ilomambo

ответ

0

Моя ошибка, снова.
я упростил код, чтобы показать его здесь, но на практике в то время как условие было

while(m.find() && --count>0) 

и граф был виновником. Регулярное выражение было в порядке.

Вывод: «Идите спать, если вы слишком устали работать»

+0

heh. Вы не должны упрощать код при публикации. Очень часто такие ошибки являются основной проблемой: p – keyser

+0

@Keyser. Вы правы в том, что такие ошибки являются общими при упрощении кода. С другой стороны, когда у вас очень длинный код со сложными функциями и вызовами, страх в том, что потенциально у людей не будет времени и терпения, чтобы самостоятельно фильтровать несвязанный код и не потрудись попытаться понять вопрос. Специально, когда вы нацеливаете очень простой аспект своего кода. Я думаю, что упрощение в порядке, вам просто нужно сделать это правильно; когда вы не знаете, что случилось со мной здесь. – ilomambo

+0

Да, нужен MWE (минимальный рабочий пример). – keyser

Смежные вопросы