更新:すべてのすばらしい応答に感謝します! 多くの異なる正規表現パターンを試しましたが、なぜ m.matches() が本来あるべきことをしていないのか理解できませんでした。代わりにm.find()に切り替え、正規表現パターンを調整すると、どこかにたどり着くことができました。
Java 文字列のパターンを照合し、一致した部分を正規表現 (Perl の $& 演算子など) を使用して抽出したいと考えています。
これがソース文字列「s」DTSTART;TZID=America/Mexico_City:20121125T153000
です。「America/Mexico_City」の部分を抽出したいと考えています。
Pattern と Matcher を使用してから m.group() を使用して抽出できると思っていましたが、期待どおりに機能しません。私はさまざまな正規表現文字列でモンキーを試みましたが、 m.matches() にヒットしたように見える唯一のものは".*TZID.*"
、文字列全体を返すだけなので無意味です。誰かが私を啓発できますか?
Pattern p = Pattern.compile ("TZID*:"); // <- change to "TZID=([^:]*):"
Matcher m = p.matcher (s);
if (m.matches ()) // <- change to m.find()
Log.d (TAG, "looking at " + m.group ()); // <- change to m.group(1)