我試圖從HTML代碼中獲取某些ID。我有一些工作,但我需要幫助的其他事情。下面是視頻部分的HTML代碼示例:正則表達式匹配字符串之前或之後,並且每個集合只返回一個匹配
<video id="movie1" class="show_movie-camera animation_target movieBorder hasAudio movieId_750" src="/path/to/movie" style="position: absolute; z-index: 505; top: 44.5px; left: 484px; display: none;" preload="true" autoplay="true"></video>
<video id="movie2" class="clickInfo movieId_587" src="/path/to/movie" preload="true" autoplay="true"></video>
<video id="movie300" src="/path/to/movie" preload="true" autoplay="true"></video>
爲了得到影片的ID,我找movieId_ [ID]或電影[ID]使用此正則表達式:
.*?<object|<video.*?movie(\\d+)|movieId_(\\d+)[^>]*>?.*?
這種運作良好,但它將movieId_ [ID]和電影[ID]放在匹配中,而不僅僅是一個。我正在尋找的是使用movieId_ [ID]並使用電影[ID]作爲後備。這是我用:
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(content);
int fileId = -1;
while(m.find()) {
fileId = -1;
if (m.group(2) != null) {
fileId = new Integer(m.group(2));
} else if (m.group(1) != null) {
fileId = new Integer(m.group(1));
}
}
這會給我1,750,2,587,300,而不是750,578,300,我期待的。
此外,我正在尋找具有hasAudio類的比賽。這是我試圖沒有成功:
.*?<object|<video.*?hasAudio.*movieId_(\\d+)|movieId_(\\d+).*hasAudio[^>]*>?.*?";
任何幫助,將不勝感激。謝謝!
是的,對不起,已被更正。 – fanfavorite
[你不應該使用正則表達式來解析HTML](https://stackoverflow.com/a/1732454/6073886) –
更好地使用類似jsoup的東西? HTML是數據庫表中的內容,被拉取並處理。 – fanfavorite