作者LIAR (玻璃做的大叔)
看板RegExp
標題[問題] 如何讓搜尋不要跨行?
時間Wed Aug 3 22:28:37 2011
我目前用madedit,如果我想從文章中每一行的某字串開始,到同一行尾都要標示,
譬如說從
Program開始到"那一行的結束"一次標示,會有下面兩種情況:
1.內容有中文字,所以不能用
Program[[:print:]]*
這種寫法,遇到中文會停下,中文有特殊字元。
2.
Program[^$]*
我原本以為會把$當成每一行的結束,所以會找到行尾而停下,但結果
卻是找到文章結束。
我目前知道正規表示法如果有很多範圍的都符合要求,系統會選擇最長的,但
這表示我用的$不被當成行末嗎?請問我應該怎麼寫才對?
--
太初有道,道與耶和華同在,道就是耶和華。這道太初與耶和華同在。
萬物乃藉祂所造,凡被造的沒有一樣不是藉著祂所造的。生命在祂裡頭,
這生命就是人的光。光照在黑暗裡,黑暗卻不接受光。
吾輩乃生於黑暗,行於黑暗。因神之指引,行向光明;又因撒旦誘惑,回歸黑暗。
我不斷地徘徊於光明與黑暗之間,從被造之日至今,又自今直到那審判之日的來臨。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.176.38.160
1F:推 mars90226:Program.*$ $放在[]裡面應該就只是個$ 08/03 22:56
2F:→ LIAR:我試過了,但根據"最長符合"的原則,也是跑到最後一行。 08/04 00:13
3F:→ LIAR:不過一樓說的沒錯,中括號內的確實都當成一般文字,好像 08/04 00:14
4F:→ LIAR:自動跳脫的感覺,剛才用!@#$%^&*()試過的結論XD 08/04 00:15
5F:→ smlboby:用UltraEdit試,Program*$可正常運作,*是任意字符,$是結尾 08/04 00:28
6F:推 mars90226:我用Notepad++是OK,不知道你那個可不可以選擇貪婪與否 08/04 14:55
7F:→ mars90226:Program.*?$ 這樣呢? "?"表示非貪婪 08/04 14:58
8F:→ mars90226:等等 我記得.不會匹配\n 這樣應該只會在同一行阿... 08/04 15:01
9F:→ LIAR:喔喔喔!感謝mars90226,加個問號確實成功了,但"貪婪"是什麼 08/04 17:12
10F:→ LIAR:?我在學正規表示的時候沒看過這個耶? 08/04 17:13
11F:→ LIAR:另外smlboby說的感覺好像DOS檔名的萬用字元,但在MadEdit的 08/04 17:14
12F:→ LIAR:正規表示玩法中不被承認(囧rz)除非我把關鍵字擺行尾 08/04 17:16
13F:→ LIAR:啊!請問那個".不會匹配\n"讓我想到grep以行為單位的運作情況 08/04 17:20
14F:→ LIAR:,這樣確實不會有我的問題就是了,不曉得madedit怎麼設計的。 08/04 17:20
15F:推 mars90226:貪婪就是會盡量匹配最多 08/04 17:27