[問題] 同樣的Regex 但是出現不同結果

看板java作者 (凸鎚大法師)時間13年前 (2012/08/01 15:01), 編輯推噓0(006)
留言6則, 4人參與, 最新討論串1/1
分別兩個字串,以「請輸入代號」unitcode 中文為搜尋條件 結果跑出不同結果 false true 請問java高手,為什麼第一個判斷的結果,會是false而不是true呢? 是哪裡錯了嗎? String XX = " ▄ █ ▊ ▍ \n請輸入代號"; String X2 = "123請輸入代號123"; System.out.println(XX.matches(".*\u8acb\u8f38\u5165\u4ee3\u865f.*")); System.out.println(X2.matches(".*\u8acb\u8f38\u5165\u4ee3\u865f.*")); //請輸入代號 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.175.188

08/01 16:00, , 1F
有個 \n 擋在那裏,預設 . 不吃 \n
08/01 16:00, 1F

08/01 17:03, , 2F
如果要處理 \n,請用\\u000A. EX: (".*\\u000A")是 Ok的
08/01 17:03, 2F

08/01 17:05, , 3F
如果你無法避免資料中出現 \n, 可以使用下列的regexp
08/01 17:05, 3F

08/01 17:06, , 4F
"(.|\\u000A)*\u8acb\u8f38\u5165\u4ee3\u865f(.|\\u000A)*"
08/01 17:06, 4F

08/01 17:10, , 5F
用(?s).* 讓 . 代表全部就行了
08/01 17:10, 5F

08/01 23:01, , 6F
傳說中的DOTALL flag
08/01 23:01, 6F
謝謝 各位大師指導,(.|\\u000A)* 與 (?s).* 都可以執行 ※ 編輯: arliang 來自: 59.120.175.188 (08/03 10:26)
文章代碼(AID): #1G6DGsHc (java)