Java中正则表达式的差异

Java中正则表达式的差异,java,regex,Java,Regex,我有下面的HTML,我希望找到我的正则表达式工作的当前播放的艺术家和歌曲标题,它用Java正确编译,但它与任何内容都不匹配 HTML代码段 当前正在播放。 节目主持人: AutoDJ-口号 歌曲名称: 艺术家名称-歌曲名称 Java代码 String data=getWebsiteData(url); 数据=数据。替换(“\\t”和“); Pattern pat=Pattern.compile(“歌曲标题:\r(+)\r”); 匹配器匹配器=匹配器(数据); if(matcher.matche

我有下面的HTML,我希望找到我的正则表达式工作的当前播放的艺术家和歌曲标题,它用Java正确编译,但它与任何内容都不匹配

HTML代码段

当前正在播放。
节目主持人:
AutoDJ-口号
歌曲名称:
艺术家名称-歌曲名称
Java代码

String data=getWebsiteData(url);
数据=数据。替换(“\\t”和“);
Pattern pat=Pattern.compile(“歌曲标题:\r(+)\r”);
匹配器匹配器=匹配器(数据);
if(matcher.matches())
{
数据=匹配器组(1);
}
其他的
{
System.out.println(“不匹配”);
}
返回数据;
您的问题是,只有当整个序列与正则表达式匹配时,才会返回true

您需要,它将查找匹配的子序列

我还认为,最好使用标志让您的
也匹配换行符,而不是自己尝试匹配换行符,因为不同系统的换行符标准不同:

Pattern pat = Pattern.compile("<div class=\"audio_track_title\">SONG TITLE:\r(.+)\r</div>", Pattern.DOTALL);
Pattern pat=Pattern.compile(“歌曲标题:\r(+)\r”,Pattern.DOTALL);
您的问题是,只有当整个序列与正则表达式匹配时,才会返回true

您需要,它将查找匹配的子序列

我还认为,最好使用标志让您的
也匹配换行符,而不是自己尝试匹配换行符,因为不同系统的换行符标准不同:

Pattern pat = Pattern.compile("<div class=\"audio_track_title\">SONG TITLE:\r(.+)\r</div>", Pattern.DOTALL);
Pattern pat=Pattern.compile(“歌曲标题:\r(+)\r”,Pattern.DOTALL);

我想说的是,停止使用正则表达式进行HTML解析。相反,使用一个专用的库,比如为什么要使用正则表达式..使用解析器..我会说停止使用正则表达式进行HTML解析。相反,使用一个专用的库来实现这一点,比如为什么正则表达式..使用解析器。。