当前位置: 首页 > 面试题库 >

模式/匹配器group()在Java中获取子字符串?

裴兴言
2023-03-14
问题内容

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

问题答案:

您可以使用m.match()它尝试匹配整个字符串,如果要使用m.find(),它将在内部搜索匹配项,我还对您的正则表达式做了一些改进,以使用零宽度查找来排除TZID前缀:

     Pattern p = Pattern.compile("(?<=TZID=)[^:]+"); //
     Matcher m = p.matcher ("DTSTART;TZID=America/Mexico_City:20121125T153000");
     if (m.find()) {
         System.out.println(m.group());
     }


 类似资料:
  • 问题内容: 我想在输入字符串中搜索给定的字符串模式。 例如 现在,我需要搜索字符串URL是否包含“ ”。请帮我。 这是一个例子。实际上,我需要检查URL是否包含匹配“ / {a-zA-Z0-9} /”的字符串。 问题答案: 您可以为此使用类。如果您只想在中匹配单词字符,则可以使用以下正则表达式。是的简写。如果您可以,请使用或。

  • 更新:感谢所有伟大的回应!我尝试了许多不同的regex模式,但不明白为什么m.matches()没有做我认为它应该做的事情。当我转而使用m.find()并调整regex模式时,我就有所进展了。 我想匹配Java字符串中的模式,然后使用regex(像Perl的$&运算符)提取匹配的部分。 这是我的源字符串“s”:我想提取“America/Mexico_City”部分。 我想我可以使用Pattern和

  • 我正在使用来查找一个文本字符串是否包含另外两个字符串。但是它需要在一个正则表达式模式中。 例如,字符串中必须有“StringOne”和“StringTwo”。 我可以做< code > pattern . compile("(string one string two | string two string one "),但是两个字符串都很长,我想看看能不能压缩它。 如果我做< code >(st

  • 这是一个示例文本:。我无法修改输入文本,我正在从文件中读取长字符串文本。 我想提取以下内容:,,, 为此,我编写了以下正则表达式模式: 我正在使用和类,但是我的Matcher无法使用前面提到的正则表达式找到模式。我在一些在线regex网站上用文本测试了这个regex,令人惊讶的是,它在那里工作。 我哪里做错了? 原始代码: 输出:未打印任何内容

  • 我正在寻找与此非常相似的东西,只是我想要所有的匹配,而不仅仅是第一个。在javascript中,您可以添加一个“全局”修饰符来获得所有匹配项的列表,在Java中是否也有类似的可能?

  • 我有这样一个JSON文件: 我需要得到回应。使用者用户名值。我试过这个: 但我得到了这个错误: 怎么修,肯定有办法,就是找不到。