([\\w\\s]*)" 我-6ren">
gpt4 book ai didi

java - 无法在 Java 中匹配正则表达式

转载 作者:搜寻专家 更新时间:2023-11-01 03:09:39 24 4
gpt4 key购买 nike

这是我要获取数据的字符串的格式/示例:

<span style='display:block;margin-bottom:3px;'><a style='margin:4px;color:#B82933;font-size:120%' href='/cartelera/pelicula/18312'>Español  </a></span><br><span style='display:block;margin-bottom:3px;'><a style='margin:4px;color:#FBEBC4;font-size:120%' href='/cartelera/pelicula/18313'>Subtitulada  </a></span><br>          </div>

这是我使用的正则表达式:

"pelicula/([0-9]*)'>([\\w\\s]*)</a>"

我在 RegexPlanet 中测试了这个正则表达式,结果没问题,它给了我预期的结果:

group(1) = 18313
group(2) = Subtitulada

但是当我尝试在 Java 中实现该正则表达式时,它无法匹配任何内容。这是代码:

Pattern pattern = Pattern.compile("pelicula/([0-9]*)'>([\\w\\s]*)</a>");              
Matcher matcher = pattern.matcher(inputLine);
while(matcher.find()){
version = matcher.group(2);
}
}

有什么问题?如果正则表达式已经过测试,并且在同一代码中我会搜索更多模式,但我遇到了两个问题(我在这里只向您展示一个)。提前致谢!

_编辑__

我发现了问题...如果我检查页面的源代码,它会显示所有内容,但是当我尝试从 Java 使用它时,它会得到另一个源代码。为什么?因为此页面询问您所在的城市,所以它可以显示相关信息。我不知道是否有解决方法来实际访问我想要的信息,但仅此而已。

最佳答案

您的正则表达式是正确的,但似乎是 \w不匹配 ñ .

我将正则表达式更改为

"pelicula/([0-9]*)'>(.*?)</a>"

它似乎与这两种情况都匹配。在这里,我使用了不情愿的 *?运算符(operator)防止.*匹配第一个 <a> 之间的所有字符直到最后<\a>参见 What is the difference between `Greedy` and `Reluctant` regular expression quantifiers?进行解释。

@Bohemian 指出您可能需要启用 Pattern.DOTALL 是正确的如果 <a> 中的文本也会标记有换行符

关于java - 无法在 Java 中匹配正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13409325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com