我将如何使用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 – Alpha Download" rel="bookmark">Jet Racing Extreme – Alpha Download</a></h2><div class="entry-meta"> Posted on <a ...
这适用于第一次出现(实际上是整个字符串),但是由于认为整个字符串是第一次出现,因此不再赘述。
希望您理解我要说的内容,但我不知道该如何解释得更清楚。
--EDIT我也尝试过用以下命令替换正则表达式:
rel="bookmark">(.*)</a></h2>
我认为这样做只会将一个行字符串的一部分视为一个出现,从而解决了我的问题。但是,不是只采取:
rel="bookmark">Jet Racing Extreme – Alpha Download</a></h2>
发生时,它还需要承受一切吗?
rel="bookmark">Jet Racing Extreme – 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字符串中某个正则表达式的匹配项?例如,如果我有字符串 我想知道字符串中出现了多少次。在该字符串中,出现两次。我希望函数告诉我它出现了两次。这可能吗? 问题答案: 现有的基于解决方案的解决方案适用于非重叠匹配(毫无疑问是最佳的,可能是因为匹配数量巨大),尽管诸如(避免在您只关心计数时实现列表)的替代方案也很可能。某种特质将使用并忽略结果字符串…: 如果您只想数数
问题内容: 我正在使用python和pexpect从某些cisco设备中收集一些信息,并且在RE上成功地提取了讨厌的小物件。恐怕我已经撞墙了。一些开关堆叠在一起,我已经在脚本中确定了这一点,并使用了一个单独的例程来解析数据。如果将交换机堆叠在一起,则会看到以下内容(从推杆输出中提取) 当我遇到此问题时,我需要提取4表中每个开关的编号和型号(sw可以忽略,但是可以有1到9个开关)这是多行事物使我如愿
如何提取所有字符(包括换行符),直到第一次出现单词序列?例如以下输入: 输入文本: 和序列我想从中提取文本到第二行中第一次出现的。 输出必须为- 我整个上午都在努力。我可以编写表达式来提取所有字符,直到遇到特定字符,但如果我使用这样的表达式: 跨换行符不匹配。