当前位置: 首页 > 知识库问答 >
问题:

patter/matcher group()来获取Java中的子字符串?

童化
2023-03-14

更新:感谢所有伟大的回应!我尝试了许多不同的regex模式,但不明白为什么m.matches()没有做我认为它应该做的事情。当我转而使用m.find()并调整regex模式时,我就有所进展了。

我想匹配Java字符串中的模式,然后使用regex(像Perl的$&运算符)提取匹配的部分。

这是我的源字符串“s”:dtstart;tzid=America/Mexico_City:20121125T153000我想提取“America/Mexico_City”部分。

我想我可以使用Pattern和Matcher,然后使用m.group()提取,但它并不像我预期的那样工作。我尝试过使用不同的regex字符串,而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)

共有1个答案

葛承德
2023-03-14

您使用m.match()尝试匹配整个字符串,如果您使用m.find(),它将搜索内部的匹配项,我还改进了您的regexp以使用零宽度查找后面来排除TZID前缀:

     Pattern p = Pattern.compile("(?<=TZID=)[^:]+"); //
     Matcher m = p.matcher ("DTSTART;TZID=America/Mexico_City:20121125T153000");
     if (m.find()) {
         System.out.println(m.group());
     }
 类似资料:
  • 我有这样一个JSON文件: 我需要得到回应。使用者用户名值。我试过这个: 但我得到了这个错误: 怎么修,肯定有办法,就是找不到。

  • 我有一个字符串: 我想从中提取,即从右边的最后一个或第一个之后的子字符串。 有人能提供一些帮助吗?

  • 问题内容: 我有一个字符串(基本上是遵循命名约定的文件名) 我想在第一个(即一个点)之前提取子字符串 在java doc api中,我似乎找不到在String中执行此操作的方法。 我想念什么吗?怎么做? 问题答案: 看看和。 确保检查的-1 。

  • 问题内容: Java中的String数据类型使我们可以通过codePointCount知道一个字符串中有多少个Unicode字符。以及如何通过codePointAt获取第n个unicode char。我很想知道是否有一个API来获取包含Java中前N个unicode字符的子字符串。 谢谢, 问题答案: 没有一个方法可以一次调用,但可以帮助您完成此操作。

  • 问题内容: 有没有一种方法可以在Python中对字符串进行子字符串化,以从第三个字符到字符串末尾获取新的字符串? 也许喜欢吗? 如果离开第二部分意味着“直到最后”,而如果离开第一部分,它是否从头开始? 问题答案: Python称这个概念为“切片”,它不仅适用于字符串,还适用于更多的领域。看看这里的一个全面的介绍。

  • 在 String 中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。 1. substring(int beginIndex) 形式 此方式用于提取从索引位置开始至结尾处的字符串部分。调用时,括号中是需要提取字符串的开始位置,方法的返回值是提取的字符串。例如: 2. substring(int beginIndex,int e