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

正则表达式在一行中多次出现

祁聪
2023-03-14
问题内容

我将如何使用Java中的regex在一行中找到多个匹配项?

我的代码(包括正则表达式):

public static List<String> getTitles(String html) {
    List<String> titles = new ArrayList<String>();
    String pattern = "(.*)rel=\"bookmark\">(.*)</a></h2>";
    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(html);
    while (m.find())
        System.out.println(m.group(2));
    return titles;
}

我在其中使用的部分字符串

... title="Permalink to Jet Racing Extreme &#8211; Alpha Download" rel="bookmark">Jet Racing Extreme &#8211; Alpha Download</a></h2><div class="entry-meta"> Posted on <a ...

这适用于第一次出现(实际上是整个字符串),但是由于认为整个字符串是第一次出现,因此不再赘述。

希望您理解我要说的内容,但我不知道该如何解释得更清楚。

--EDIT我也尝试过用以下命令替换正则表达式:

rel="bookmark">(.*)</a></h2>

我认为这样做只会将一个行字符串的一部分视为一个出现,从而解决了我的问题。但是,不是只采取:

rel="bookmark">Jet Racing Extreme &#8211; Alpha Download</a></h2>

发生时,它还需要承受一切吗?

rel="bookmark">Jet Racing Extreme &#8211; Alpha Download</a></h2><divclass="entry-meta"> Posted on <ahref="http://www.alphabetagamer.com/jet-racing-extreme-alpha-download/" title="7:29 pm" rel="bookmark"> ...

问题答案:
String pattern = "rel=\"bookmark\">(.*?)</a></h2>";

                                      ^^

让他们不贪心。



 类似资料:
  • 我有一个字符串,可以是下面任何一种情况: < li >测试1/测试2/测试3/测试4/测试5/ < li >测试1/测试2/测试3/测试4// < li >测试1/测试2/测试3/// < li >测试1/测试2//// < li>test1///// 我的预期结果是 > < li >测试1/测试2/测试3/测试4/测试5 < li> 测试1/测试2/测试3/测试4 测试1/测试2/测试3 目前,

  • 我有一个正则表达式,它应该将< code>[img]foo.bar[/img]重写为< code > 一个可行的例子是https://www.regex101.com/r/mJ9sM0/1

  • 问题内容: 我对多行字符串的replaceAll有问题: 以上适用于testWorks,但不适用于testIllegal !?为什么会这样,我该如何克服呢?我需要替换跨越多行的注释/ * … * /。 问题答案: 您需要使用标志来表示点应与换行符匹配。例如 或者使用例如在模式中指定标志

  • 问题内容: 有没有办法找出Python字符串中某个正则表达式的匹配项?例如,如果我有字符串 我想知道字符串中出现了多少次。在该字符串中,出现两次。我希望函数告诉我它出现了两次。这可能吗? 问题答案: 现有的基于解决方案的解决方案适用于非重叠匹配(毫无疑问是最佳的,可能是因为匹配数量巨大),尽管诸如(避免在您只关心计数时实现列表)的替代方案也很可能。某种特质将使用并忽略结果字符串…: 如果您只想数数

  • 问题内容: 请看下面的正则表达式,这里是任何正则表达式。 此正则表达式将测试确切X发生的时间或时间。 是否有一个正则表达式量词可以测试的发生恰好或次? 问题答案: 没有单个量词的意思是“恰好是m或n次”。你的操作方式很好。 替代方法是: 其中和是的值。

  • 问题内容: 我正在使用python和pexpect从某些cisco设备中收集一些信息,并且在RE上成功地提取了讨厌的小物件。恐怕我已经撞墙了。一些开关堆叠在一起,我已经在脚本中确定了这一点,并使用了一个单独的例程来解析数据。如果将交换机堆叠在一起,则会看到以下内容(从推杆输出中提取) 当我遇到此问题时,我需要提取4表中每个开关的编号和型号(sw可以忽略,但是可以有1到9个开关)这是多行事物使我如愿