Re: [問題] [年月日...] 的 regular expression

看板RegExp (正規表示式 Regular Expression)作者 (function(){})()時間7年前 (2016/08/01 20:15), 7年前編輯推噓2(209)
留言11則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《ggirls》之銘言: : 有時可以沒有年,有時可以沒有日,但若是「年-日」 : 就應拆分成兩個日期。 也就是 年月日 年月 月日 年 月 日 對吧 先分析一下 月 出現最多次 所以以月為主 pattern 而沒有月的當例外處理 可以寫成 (?:\s*\d+\s*年)?(?:\s*\d+\s*月(?:\s*\d+\s*日)?) 例外的兩個規則分別是 年 與 日 所以寫成 \s*\d+\s*[年日] 最後用 | 連起來 (?:\s*\d+\s*年)?(?:\s*\d+\s*月(?:\s*\d+\s*日)?)|\s*\d+\s*[年日] 我的執行結果: > '1月 1日 2年 2月 2 日 3年3月 4年 5年5月 6年 7日' .match(/(?:[0-9 ]+年)?(?:[0-9 ]+月(?:[0-9 ]+日)?)|[0-9 ]+[年日]/g) [ '1月 1日', ' 2年 2月 2 日', ' 3年3月', ' 4年', ' 5年5月', ' 6年', ' 7日' ] 語言為 JavaScript (Node.js v6.2.1) --

12/10 18:52,
我之前也發生過很多次 yahoo本來就很爛 還外加奇摩
12/10 18:52

12/10 18:53,
之前即時通死都不讓我登入 後來我就改用MSN了...
12/10 18:53

12/10 18:53,
發現MSN也不給你登....
12/10 18:53

12/10 18:55,
就改登PTT了
12/10 18:55

12/10 18:57,
最近ptt也一直斷....
12/10 18:57

12/10 19:57,
只好掀桌出去裸奔了...
12/10 19:57
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.198.141 ※ 文章網址: https://www.ptt.cc/bbs/RegExp/M.1470053740.A.CE5.html ※ 編輯: s25g5d4 (140.117.198.141), 08/01/2016 20:18:37

08/01 22:49, , 1F
這個感覺不錯,不過如果要抓年月日的資料呢?
08/01 22:49, 1F

08/01 22:49, , 2F
好像只能用程式判斷最後拿到的資料是年還是日
08/01 22:49, 2F

08/02 09:38, , 3F
真的很高興有人可以教我如何思考。
08/02 09:38, 3F

08/02 09:40, , 4F
試著改寫中。目前卡在我把三個"?:"拿掉,會得到錯誤結果。
08/02 09:40, 4F

08/02 09:41, , 5F
我的觀念裡,non-capturing group對結果不會引響,只是
08/02 09:41, 5F

08/02 09:42, , 6F
顯性或隱性分組的分別嗎?
08/02 09:42, 6F

08/02 09:42, , 7F
好像我的觀念是錯的。我用Python3.4。
08/02 09:42, 7F

08/02 09:52, , 8F
拿掉non-capturing我這邊的結果是:
08/02 09:52, 8F

08/02 09:55, , 9F
[('', '1月 1日', ' 1日'), (' 2年', ' 2月 2 日', ' 2
08/02 09:55, 9F

08/02 09:55, , 10F
日'), (' 3年', '3月', ''), ('', '', ''), (' 5年', '5
08/02 09:55, 10F

08/02 09:55, , 11F
月', ''), ('', '', ''), ('', '', '')]
08/02 09:55, 11F
文章代碼(AID): #1Ndpripb (RegExp)
文章代碼(AID): #1Ndpripb (RegExp)