Re: [問題] regular 在java unix 為什麼不一樣?

看板RegExp (正規表示式 Regular Expression)作者 (-6.2598534e+18f)時間9年前 (2015/09/25 18:22), 編輯推噓2(2015)
留言17則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《pttnews (PTT新聞)》之銘言: : 在java 我用 http://java-regex-tester.appspot.com/ 測試 : 在unix 我用 vim 測試 : 最近小弟在學習regular , regular 實屬強大不得不學 : 有很多問題 : 例如: : [a-b[c-d]] 我想要找a-b and c-d : 在vim 沒辦法找到 /[a-b[c-d] : 在java 則可以 : 請問各位高手, 這兩者為何不一? : 找到答案, : Unix 要加上\ : [a-b\[c-d\]] 你一定哪裡搞錯了 [a-b\[c-d\]] 是「a 到 b、或 [、或 c 到 d、或 ]」 這怎麼看都不是「a-b and c-d」... 再說你這句「a-b and c-d」也語焉不詳,究竟你想找的是什麼東西 @@ ---- 然後回到 [a-b[c-d]],它是 [a-b[c-d] 跟著 ] 前一個是「a 到 b、或 [、或 c 到 d」 [] 的規則是平常時候只有 [ 為特殊字,] 不是; 碰到 [ 之後變成 ] 為特殊字,[ 不是 然後這兩個特殊字中間再去套字元類別的規則 也就是 [] 是沒有巢狀結構的,[ 會配上它後面第一個看到的 ] 把中間一把抓 原式找不到東西的原因多半就是因為這樣而留在外面的最後一個 ] 吧 在外面 ] 不是特殊字所以它就要求對上一個 ] 字 -- LPH [acronym] = Let Program Heal us -- New Uncyclopedian Dictionary, Minmei Publishing Co. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.30.49 ※ 文章網址: https://www.ptt.cc/bbs/RegExp/M.1443176561.A.4C5.html

09/25 21:00, , 1F
謝謝L大, 我想要測試 交集 跟 聯集
09/25 21:00, 1F

09/25 21:01, , 2F
09/25 21:01, 2F

09/25 21:02, , 3F
按照他上面的說明 [a-d[m-p]]聯集 [a-z&&[def]]交集
09/25 21:02, 3F

09/25 21:04, , 4F
事實上, 好像如你所說[]被當成字元看待
09/25 21:04, 4F

09/25 21:04, , 5F
請問是不是他說錯了
09/25 21:04, 5F

09/25 21:41, , 6F
應該是他弄錯了...常見的 regexp 的 character class
09/25 21:41, 6F

09/25 21:41, , 7F
直接寫一起就是聯集, 如 [a-dm-p]
09/25 21:41, 7F

09/25 21:43, , 8F
交集的話我不太確定, 似乎有 google 到好像部份的 regexp
09/25 21:43, 8F

09/25 21:43, , 9F
支援他講的 && 語法的樣子
09/25 21:43, 9F

09/25 21:47, , 10F
啊, 找到文件了: 他講的那種交集聯集語法 java 有支援
09/25 21:47, 10F

09/25 21:47, , 11F
所以你在那個網站上面測試會如你所預期
09/25 21:47, 11F

09/25 21:48, , 12F
Oracle 官方說明文件→http://tinyurl.com/o7dz2g2
09/25 21:48, 12F

09/25 21:49, , 13F
但那種語法一般的 PCRE regexp 是不支援的
09/25 21:49, 13F

09/25 21:49, , 14F
所以 vim 才試不出來
09/25 21:49, 14F

09/25 22:08, , 15F
謝謝L大
09/25 22:08, 15F

09/25 22:09, , 16F
好像.NET也有一些奇怪的語法
09/25 22:09, 16F

09/25 22:10, , 17F
先不管~現有這些夠用了
09/25 22:10, 17F
文章代碼(AID): #1M1I1nJ5 (RegExp)
文章代碼(AID): #1M1I1nJ5 (RegExp)