[問題] 如何 不要抓到重複3次的數字
看板RegExp (正規表示式 Regular Expression)作者x246libra (宸火)時間6年前 (2018/11/08 20:24)推噓9(9推 0噓 14→)留言23則, 6人參與討論串1/1
想測試的字串如下
08/12/80 > 成功 08/12/80
1/5 > 成功 1/5
15/1/2001 > 成功 15/1/2001
15/1/201 > 失敗 捕獲 15/1/20
15/1//201 > 失敗 捕獲 15/1
請問如何改進
\b\d{1,2}/\d{1,2}(?:/\d{4}|/\d{2})?
測試網址
https://regex101.com/r/2llPr2/6
排除的條件
不知道怎麼寫比較好
不想要捕獲 最下面兩個
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.36.109
※ 文章網址: https://www.ptt.cc/bbs/RegExp/M.1541679870.A.61C.html
→
11/08 20:51,
6年前
, 1F
11/08 20:51, 1F
不太能理解 (?!/) 是怎麼運作
規則 \b\d{1,2}/\d{1,2}(?:(?!/))\b
測試 08/12/80
為什麼明明\b開頭 卻捕獲到 12/80
https://regex101.com/r/2llPr2/7
推
11/08 22:09,
6年前
, 2F
11/08 22:09, 2F
→
11/08 22:10,
6年前
, 3F
11/08 22:10, 3F
推
11/08 22:13,
6年前
, 4F
11/08 22:13, 4F
→
11/08 22:13,
6年前
, 5F
11/08 22:13, 5F
了解\b的用法了
但(?!/) 不是很懂
找到的說明
(?!pattern) --- pattern吻合,前面的就不比對(跟?=相反的邏輯)
(?!....)就是含有pattern時「排除比對」。
疑問來了,那到底什麼規則才會被捕獲?
逆否命題 只能說
有捕獲到就表示一定沒有符合pattern
規則 \b\d{1,2}/\d{1,2}(?!/)\b
想測試的字串如下
1/5 > 捕獲 1/5
1/5- > 捕獲 1/5
1/5a > 沒捕獲
為什麼 第3個 無法捕獲 1/5
第3個有符合 pattern嗎?
測試網站 https://regex101.com/r/2llPr2/9
※ 編輯: x246libra (36.226.36.109), 11/08/2018 22:55:23
→
11/08 22:57,
6年前
, 6F
11/08 22:57, 6F
推
11/08 23:14,
6年前
, 7F
11/08 23:14, 7F
推
11/08 23:17,
6年前
, 8F
11/08 23:17, 8F
→
11/08 23:17,
6年前
, 9F
11/08 23:17, 9F
推
11/08 23:20,
6年前
, 10F
11/08 23:20, 10F
→
11/08 23:21,
6年前
, 11F
11/08 23:21, 11F
→
11/08 23:21,
6年前
, 12F
11/08 23:21, 12F
推
11/08 23:24,
6年前
, 13F
11/08 23:24, 13F
→
11/08 23:25,
6年前
, 14F
11/08 23:25, 14F
推
11/08 23:59,
6年前
, 15F
11/08 23:59, 15F
→
11/08 23:59,
6年前
, 16F
11/08 23:59, 16F
→
11/09 00:00,
6年前
, 17F
11/09 00:00, 17F
→
11/09 00:00,
6年前
, 18F
11/09 00:00, 18F
→
11/09 00:01,
6年前
, 19F
11/09 00:01, 19F
→
11/09 00:03,
6年前
, 20F
11/09 00:03, 20F
→
11/10 15:08,
6年前
, 21F
11/10 15:08, 21F
推
02/03 02:08,
6年前
, 22F
02/03 02:08, 22F
推
06/26 23:41,
6年前
, 23F
06/26 23:41, 23F
RegExp 近期熱門文章
PTT數位生活區 即時熱門文章