[問題] 如何讓搜尋不要跨行?

作者: LIAR (玻璃做的大叔)   2011-08-03 22:28:37
我目前用madedit,如果我想從文章中每一行的某字串開始,到同一行尾都要標示,
譬如說從Program開始到"那一行的結束"一次標示,會有下面兩種情況:
1.內容有中文字,所以不能用
Program[[:print:]]*
這種寫法,遇到中文會停下,中文有特殊字元。
2.Program[^$]*
我原本以為會把$當成每一行的結束,所以會找到行尾而停下,但結果
卻是找到文章結束。
我目前知道正規表示法如果有很多範圍的都符合要求,系統會選擇最長的,但
這表示我用的$不被當成行末嗎?請問我應該怎麼寫才對?
作者: mars90226 (火星人)   2011-08-03 22:56:00
Program.*$ $放在[]裡面應該就只是個$
作者: LIAR (玻璃做的大叔)   2011-08-04 00:13:00
我試過了,但根據"最長符合"的原則,也是跑到最後一行。不過一樓說的沒錯,中括號內的確實都當成一般文字,好像自動跳脫的感覺,剛才用!@#$%^&*()試過的結論XD
作者: smlboby (波比)   2011-08-04 00:28:00
用UltraEdit試,Program*$可正常運作,*是任意字符,$是結尾
作者: mars90226 (火星人)   2011-08-04 14:55:00
我用Notepad++是OK,不知道你那個可不可以選擇貪婪與否Program.*?$ 這樣呢? "?"表示非貪婪等等 我記得.不會匹配\n 這樣應該只會在同一行阿...
作者: LIAR (玻璃做的大叔)   2011-08-04 17:12:00
喔喔喔!感謝mars90226,加個問號確實成功了,但"貪婪"是什麼?我在學正規表示的時候沒看過這個耶?另外smlboby說的感覺好像DOS檔名的萬用字元,但在MadEdit的正規表示玩法中不被承認(囧rz)除非我把關鍵字擺行尾啊!請問那個".不會匹配\n"讓我想到grep以行為單位的運作情況,這樣確實不會有我的問題就是了,不曉得madedit怎麼設計的。
作者: mars90226 (火星人)   2011-08-04 17:27:00
貪婪就是會盡量匹配最多

Links booklink

Contact Us: admin [ a t ] ucptt.com