0

文字列「Search\nPrefix with tag: app: or text:」内の「\b\w+:」と一致させようとしています。

コードは次のようになります。

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:");

それは動作するはずですよね? これは、文字列からの明示的なテキストと同じです。しかし、まだ一致するものはありません。文字列の改行に到達すると、マッチャーがマッチングを停止すると思われます。そしてどういうわけか、マッチャーに文字列全体をスキャンするように指示するフラグまたは何かが必要です。

4

1 に答える 1

1

私の間違い、もう一度。
ここに示すためにコードを単純化しましたが、実際には while 条件は

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

、そしてカウントが原因でした。正規表現はOKでした。

結論は「疲れすぎて仕事ができないなら寝なさい」

于 2012-04-21T16:16:31.117 に答える