![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 七嘴八舌異言堂
(https://www.pcdvd.com.tw/forumdisplay.php?f=12)
- - 請問正則表示式(regular expression)能做到這樣嗎?
(https://www.pcdvd.com.tw/showthread.php?t=971492)
|
---|
1個附加檔案
我個人是比較喜歡用SmartGet的正則表達式測試器
match幾是什麼值都一目瞭然 search: [^\n]+?Value=([^,]+),Expected=([^,]+),[^\n]+?,Resolution=([^,]+),Lux=([\d]+)[^\n]+ |
引用:
你好,可以參考這篇,裡面有一些規則(其實我覺得我跳太快了,都亂try http://www.ultraedit.com/support/tu...xpressions.html |
安裝研究expresso中,vxr這招很神奇
smartget感覺也挺厲害的,但是我其實要針對輸出的文字還要做其他的文字處理 所以針對我的案例,ui界面應該不太合用吧? regular express真的很強,會用的話,搭配grep來用真的很方便:nonono: |
我十幾年前最早是學 BSD, Linux 裡的 grep, sed,後來為了寫 CGI 學 Perl 時順便學小虫虫後發現 Perl 的更強。
後來不管用啥語言或工具,我大都習慣用 Perl 系的,其實 POSIX RE 應該也做得到,我給 UE 的範例,是因為樓主跟我工作性質差不多,所以我猜樓主應該會用 UE,能用的工具很多,但能用手邊工具完成工作是最好的。 至於 UE,我只有快速瀏覽一下 online help,不同工具都會有點差異性,實際上這些東西觀念有懂,用起來都差不多。 回答你的新問題,一樣用 UE 裡的 search 勾選 Perl RE。 Value=([0-9]+).*Expected=([-0-9]+).*Resolution=([x0-9]+).*Lux=([0-9]+) 覺得你對 RE 還不是很清楚,先打好底再用工具比較好。 |
黑天使兄說的沒錯
我很常用ultraedit所以ultraedit的perl replace幫了我解決了很多麻煩 regular express很好用但是我也是只會些入門的小技巧來解決手邊的問題 一但碰到一些比較麻煩的或是沒看過的問題就開始亂try亂看網頁了 如果還是不行後就上網討救兵:laugh: 然後幸運點問題解決後就吸收大家的經驗,但是還是沒什麼長進:D 工作了幾年常常還是感覺自己各方面都很欠缺,這點東西都沒辦法自己搞定 :jolin: 總歸一句,RE對工程師來說是相當有用的工具 :flash: |
echo '0x00 0x00 0x08 0x00 0x02 0x00 0x04 0x00 0x02 0xFF 0x00 0xFF 0x02 0x07 0x88 0x02 0x09' | sed -e 's/\(0x[0-9a-fA-F][0-9a-fA-F] 0x[0-9a-fA-F][0-9a-fA-F] 0x[0-9a-fA-F][0-9a-fA-F] \)/\1\n/g'
|
smartget那個是讓你一開始寫表達式的時候可以知道自己抓到什麼
不是要用來輸出的 |
我當初學Regular Expression是看Larry Wall的原文書(駱駝書) , 裡面就有提到5個Rule
想打好基礎可以去看那本書 , 其它的Programming 提到Regular Expression幾乎都是輕描淡寫帶過 只有這本駱駝書,是很仔細的說明Rules該怎麼走,怎麼用!! 記得當時念原文書時,裡面一堆的單字幾乎都看不懂,後來逐字找意思,才看懂書中的說明!! 有些說明,可能要做個Lab才能夠體會!! :ase |
引用:
我覺得你能力比我好太多了,只是因為你沒在接觸而已,所以這次才大概說一下我是怎樣學的讓你參考,像我這麼笨的人都能學會,你一定沒問題。 這東西不是只有在 UE 裡能用,對我們寫 C/C++ 的人來說,有一種東西叫 PCRE lib。 當然 PCRE 就不用小虫虫(~)啦,至於什麼是小虫虫,請參考駱駝書。 :laugh: :laugh: :laugh: :laugh: :laugh: |
@暗天使兄
說真的,你太謙虛了:ase 我出社會也才幾年而已,還有很多東西要向你和很多前輩請教 因為gamma會有小數點所以參考上面dkjfso兄的規則修正了一下,dkjfso兄的概念挺好的 .*Value=([^,]+),.*Expected=([^,]+),.*Resolution=([x0-9]+).*Lux=([0-9]+).* 另外還有一點比較奇怪的 .*Test=([\w-\.]+),.*Value=([\w-\.]+),.*Expected=([\w-\.]+),.*Resolution=([\w-\.]+),.*Lux=([\w-\.]+)<.* 這個規則在expresso上面run沒有問題但是拿到ultraedit就出現語法錯誤 這種情況是為什麼? @vxr兄 稍微玩了一下,玩來expresso也是和smg的工具一樣是分析器 有這個的確還蠻方便的 :laugh: ![]() 另外因為我沒說清楚所以該規則也沒法抓到浮點數所以我也改了一下,這樣應該沒錯吧 :D (Value|Expected|Resolution|Lux)=([\w-\.]+),? |
所有的時間均為GMT +8。 現在的時間是11:48 PM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2025。