[問題]抓RSS的時間

看板RegExp (正規表示式 Regular Expression)作者 (菸酒生)時間16年前 (2008/11/30 20:38), 編輯推噓6(6033)
留言39則, 2人參與, 最新討論串1/1
我用java寫的,請問一下 我要抓GOOGLE的RSS, 裡面有一行 <atom:updated>2008-11-30T10:55:28Z</atom:updated> 為什麼我pattern這樣寫抓不到東西呢? <atom:updated>.*?</atom:updated> 第二個問題 我寫了一個pattern條件式 <(p|span)>.*?</\\1> 可以抓<p>..</p> <span>..</span> 那如果我要多抓一個這樣的東西 <div id="news" ..>..</div> 有辦法和 <(p|span)>.*?</\\1> 這個式子合併一起寫嗎? 我的疑問在於這樣寫的話 <(p|span|div id="news")>.*?</\\1> 後面的\\1會抓到整個div id="news",沒辦法讓他等於div, 不知道有沒有方法能夠把這幾個條件併成一個式子寫? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.57.7 ※ 編輯: fantasywater 來自: 140.112.57.7 (11/30 20:39)

11/30 21:20, , 1F
第二個 你可以改成這樣 <(p|span|div).*>(.*?)</\1>
11/30 21:20, 1F

11/30 21:21, , 2F
雖然也會抓到 <p xxxx>..</p> 之類的東西
11/30 21:21, 2F

11/30 21:21, , 3F
但是不知道你的情況怎樣 所以就先試試看吧
11/30 21:21, 3F

11/30 21:22, , 4F
而第一個的寫法是對的 但是這僅供"判斷而已"
11/30 21:22, 4F

11/30 21:23, , 5F
你還要加上()括弧 去capture!! 改成<xxx>(.*?)<xxx>這樣
11/30 21:23, 5F

11/30 21:59, , 6F
感謝回答:) 2.的div id="news"必須整串寫死不能代換
11/30 21:59, 6F

11/30 22:00, , 7F
<(p|span)( .*?)?>.*?</?\\1> 其實原式是這樣子的
11/30 22:00, 7F

11/30 22:02, , 8F
1的話還是不行耶 我是這樣寫的:
11/30 22:02, 8F

11/30 22:04, , 9F
Matcher dateMat = datePat.matcher(xmlFile);
11/30 22:04, 9F

11/30 22:04, , 10F
datePat就是你說的那行
11/30 22:04, 10F

11/30 22:05, , 11F
if(dateMat.find()) 然後進不去funtion,沒找到 @_@"
11/30 22:05, 11F

11/30 22:23, , 12F
我不知道你回覆的2 想表示什麼@@"
11/30 22:23, 12F

11/30 22:23, , 13F
而1的話 我測是可以的 不知道你是用什麼語言寫的?
11/30 22:23, 13F

11/30 22:34, , 14F
2想表達的是眾多div tag我只要抓id="news"的 後續還
11/30 22:34, 14F

11/30 22:35, , 15F
要處理抓到的內容,所以要避免雜訊,不然很多網頁都有
11/30 22:35, 15F

11/30 22:36, , 16F
有DIV標籤,後續處理的部分就會變得很多很多@_@"
11/30 22:36, 16F

11/30 22:38, , 17F
1的話我是在eclipseIDE環境下用java寫的
11/30 22:38, 17F

11/30 22:55, , 18F
<(p|span|(div) id="news")>(.*?)</(?:\1|\2)> 改成這樣
11/30 22:55, 18F

11/30 22:55, , 19F
1的效果就可以達成了!
11/30 22:55, 19F

11/30 23:01, , 20F
Java我不熟 xd 抱歉啦~ 不過那個應該不可能不行才對...
11/30 23:01, 20F

11/30 23:02, , 21F
可能是什麼函式用錯吧xD? 還是有打錯字之類的 我不知道 哈
11/30 23:02, 21F

11/30 23:02, , 22F
等等 我問一下 兩個tag之間有換行嗎?
11/30 23:02, 22F

12/01 01:06, , 23F
先討論2好了,我有想過您建議的寫法,但是那可能會拿到
12/01 01:06, 23F

12/01 01:07, , 24F
<p>..</div> or <span>..</div>我要再實驗看看@@"
12/01 01:07, 24F

12/01 01:08, , 25F
至於1的話,我剛剛發現我JAVA吃進來的XML檔案和使用
12/01 01:08, 25F

12/01 01:08, , 26F
另存新檔得到的結果不一樣,也就是說原本的XML檔可能
12/01 01:08, 26F

12/01 01:09, , 27F
不具有<atom:updated>..</atom:updated>,這行有可能
12/01 01:09, 27F

12/01 01:10, , 28F
是一些萬布的樣式表作用而加上去的,所以可能抓不到@@
12/01 01:10, 28F

12/01 01:11, , 29F
我猜啦XD,因為我抓<title>..</title>是有東西的!!
12/01 01:11, 29F

12/01 01:12, , 30F
萬布改成外部 打錯字了~
12/01 01:12, 30F

12/01 01:34, , 31F
剛試了一下,2的效果不錯,沒遇到太多例外,不過還要多
12/01 01:34, 31F

12/01 01:35, , 32F
試幾個網頁才知道~
12/01 01:35, 32F

12/01 14:58, , 33F
你上面講的問題應該是不會發生 前提是在以標準為前提建構
12/01 14:58, 33F

12/01 14:59, , 34F
的RSS 因為都是<x> <q>...</q> </x> 由外到內這樣包起來
12/01 14:59, 34F

12/01 14:59, , 35F
而你上面有用貪婪的方式去抓(.*?) 所以就會避免你講的情況
12/01 14:59, 35F

12/01 15:00, , 36F
前提很重要 不過我看大部分的RSS都寫的中規中矩的 應該
12/01 15:00, 36F

12/01 15:00, , 37F
不會有問題發生才對xd~
12/01 15:00, 37F

12/01 15:47, , 38F
要記得加m 這個參數喔 可以讓. 去 match new line這個char
12/01 15:47, 38F

12/01 15:47, , 39F
我覺得有可能是因為有換行的關係啦~ 試試看!
12/01 15:47, 39F
文章代碼(AID): #19Ceb1sY (RegExp)
文章代碼(AID): #19Ceb1sY (RegExp)