关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
Emacs的正则表达式不支持负向预查?
-
- 帖子: 750
- 注册时间: 2006-03-19 11:39
- lilydjwg
- 论坛版主
- 帖子: 4250
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: Emacs的正则表达式不支持负向预查?
要是 Emacs 真的办不到的话就只能想别的办法了。这么来说 Emacs 的正则不是很强大?不知道效率上会不会飞快呢。kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
- Fermat618
- 帖子: 728
- 注册时间: 2008-12-28 16:01
Re: Emacs的正则表达式不支持负向预查?
那你用Emacs的方法来实现一个呗。自定义个匹配函数,先用原来的字符匹配方法找到Error,再找出Error后面的四个字母,如果这四个字母恰好是,“Mode",那么就不匹配这个。kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
-
- 帖子: 750
- 注册时间: 2006-03-19 11:39
Re: Emacs的正则表达式不支持负向预查?
正则只是方便而已,就算 perl 的正则,肯定也有不能处理的问题吧lilydjwg 写了:要是 Emacs 真的办不到的话就只能想别的办法了。这么来说 Emacs 的正则不是很强大?不知道效率上会不会飞快呢。kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
-
- 帖子: 750
- 注册时间: 2006-03-19 11:39
Re: Emacs的正则表达式不支持负向预查?
不知道他的应用情景,比如渲染语法高亮的话,接口只接受正则表达式,那就不太好弄Fermat618 写了:那你用Emacs的方法来实现一个呗。自定义个匹配函数,先用原来的字符匹配方法找到Error,再找出Error后面的四个字母,如果这四个字母恰好是,“Mode",那么就不匹配这个。kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
- Fermat618
- 帖子: 728
- 注册时间: 2008-12-28 16:01
Re: Emacs的正则表达式不支持负向预查?
如果不需要控制匹配始点终点或者有另外的方式控制它的话,也还是有办法的。先把Error匹配了,后面的再分四支,第一去是不以M开头的,第二支是M后不掉o的,第三支是Mo后面不接d的,第四支是Mod后面不接e的。这个方法原比使用那个所谓的向后环视要丑。kardinal 写了:不知道他的应用情景,比如渲染语法高亮的话,接口只接受正则表达式,那就不太好弄Fermat618 写了:那你用Emacs的方法来实现一个呗。自定义个匹配函数,先用原来的字符匹配方法找到Error,再找出Error后面的四个字母,如果这四个字母恰好是,“Mode",那么就不匹配这个。kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
- gamesun
- 帖子: 119
- 注册时间: 2010-09-06 14:25
Re: Emacs的正则表达式不支持负向预查?
这个方法可以,但是不适用现在的Emacs 24版本,这里有针对Emacs 24.2的环视补丁:tangboyun 写了:http://cx4a.org/hack/emacs-regexp-extension.html
Emacs Regexp Extension代码: 全选
Lookaround: Positive Lookahead \(?=...\) Negative Lookahead \(?!...\) Positive Lookbehind \(?<=...\) Negative Lookbehind \(?<!...\\)
代码: 全选
$ bzr branch http://cx4a.org/repo/emacs.bzr/regexp/
http://www.cnblogs.com/gamesun/archive/ ... 93382.html
-
- 帖子: 397
- 注册时间: 2006-09-27 11:17
- 联系:
Re: Emacs的正则表达式不支持负向预查?
你说对了,制作日志高亮脚本。kardinal 写了:不知道他的应用情景,比如渲染语法高亮的话,接口只接受正则表达式,那就不太好弄Fermat618 写了:那你用Emacs的方法来实现一个呗。自定义个匹配函数,先用原来的字符匹配方法找到Error,再找出Error后面的四个字母,如果这四个字母恰好是,“Mode",那么就不匹配这个。kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
-
- 帖子: 397
- 注册时间: 2006-09-27 11:17
- 联系:
Re: Emacs的正则表达式不支持负向预查?
已经转vim了。gamesun 写了:这个方法可以,但是不适用现在的Emacs 24版本,这里有针对Emacs 24.2的环视补丁:tangboyun 写了:http://cx4a.org/hack/emacs-regexp-extension.html
Emacs Regexp Extension代码: 全选
Lookaround: Positive Lookahead \(?=...\) Negative Lookahead \(?!...\) Positive Lookbehind \(?<=...\) Negative Lookbehind \(?<!...\\)
代码: 全选
$ bzr branch http://cx4a.org/repo/emacs.bzr/regexp/
http://www.cnblogs.com/gamesun/archive/ ... 93382.html