更新:感谢所有伟大的回应!我尝试了许多不同的正则表达式模式,但不明白为什么 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)