[问题] 如何让搜寻不要跨行?

楼主: 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