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

看板RegExp作者 (玻璃做的大叔)時間12年前 (2011/08/03 22:28), 編輯推噓3(3012)
留言15則, 3人參與, 最新討論串1/1
我目前用madedit,如果我想從文章中每一行的某字串開始,到同一行尾都要標示, 譬如說從Program開始到"那一行的結束"一次標示,會有下面兩種情況: 1.內容有中文字,所以不能用 Program[[:print:]]* 這種寫法,遇到中文會停下,中文有特殊字元。 2.Program[^$]* 我原本以為會把$當成每一行的結束,所以會找到行尾而停下,但結果 卻是找到文章結束。 我目前知道正規表示法如果有很多範圍的都符合要求,系統會選擇最長的,但 這表示我用的$不被當成行末嗎?請問我應該怎麼寫才對? -- 太初有道,道與耶和華同在,道就是耶和華。這道太初與耶和華同在。 萬物乃藉祂所造,凡被造的沒有一樣不是藉著祂所造的。生命在祂裡頭, 這生命就是人的光。光照在黑暗裡,黑暗卻不接受光。 吾輩乃生於黑暗,行於黑暗。因神之指引,行向光明;又因撒旦誘惑,回歸黑暗。 我不斷地徘徊於光明與黑暗之間,從被造之日至今,又自今直到那審判之日的來臨。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.176.38.160

08/03 22:56, , 1F
Program.*$ $放在[]裡面應該就只是個$
08/03 22:56, 1F

08/04 00:13, , 2F
我試過了,但根據"最長符合"的原則,也是跑到最後一行。
08/04 00:13, 2F

08/04 00:14, , 3F
不過一樓說的沒錯,中括號內的確實都當成一般文字,好像
08/04 00:14, 3F

08/04 00:15, , 4F
自動跳脫的感覺,剛才用!@#$%^&*()試過的結論XD
08/04 00:15, 4F

08/04 00:28, , 5F
用UltraEdit試,Program*$可正常運作,*是任意字符,$是結尾
08/04 00:28, 5F

08/04 14:55, , 6F
我用Notepad++是OK,不知道你那個可不可以選擇貪婪與否
08/04 14:55, 6F

08/04 14:58, , 7F
Program.*?$ 這樣呢? "?"表示非貪婪
08/04 14:58, 7F

08/04 15:01, , 8F
等等 我記得.不會匹配\n 這樣應該只會在同一行阿...
08/04 15:01, 8F

08/04 17:12, , 9F
喔喔喔!感謝mars90226,加個問號確實成功了,但"貪婪"是什麼
08/04 17:12, 9F

08/04 17:13, , 10F
?我在學正規表示的時候沒看過這個耶?
08/04 17:13, 10F

08/04 17:14, , 11F
另外smlboby說的感覺好像DOS檔名的萬用字元,但在MadEdit的
08/04 17:14, 11F

08/04 17:16, , 12F
正規表示玩法中不被承認(囧rz)除非我把關鍵字擺行尾
08/04 17:16, 12F

08/04 17:20, , 13F
啊!請問那個".不會匹配\n"讓我想到grep以行為單位的運作情況
08/04 17:20, 13F

08/04 17:20, , 14F
,這樣確實不會有我的問題就是了,不曉得madedit怎麼設計的。
08/04 17:20, 14F

08/04 17:27, , 15F
貪婪就是會盡量匹配最多
08/04 17:27, 15F
文章代碼(AID): #1EELiR7X (RegExp)