Re: Emacs的正则表达式不支持负向预查?
发表于 : 2012-02-15 22:11
关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
要不给点提示?
要是 Emacs 真的办不到的话就只能想别的办法了。这么来说 Emacs 的正则不是很强大?不知道效率上会不会飞快呢。kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
那你用Emacs的方法来实现一个呗。自定义个匹配函数,先用原来的字符匹配方法找到Error,再找出Error后面的四个字母,如果这四个字母恰好是,“Mode",那么就不匹配这个。kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
正则只是方便而已,就算 perl 的正则,肯定也有不能处理的问题吧lilydjwg 写了:要是 Emacs 真的办不到的话就只能想别的办法了。这么来说 Emacs 的正则不是很强大?不知道效率上会不会飞快呢。kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
不知道他的应用情景,比如渲染语法高亮的话,接口只接受正则表达式,那就不太好弄Fermat618 写了:那你用Emacs的方法来实现一个呗。自定义个匹配函数,先用原来的字符匹配方法找到Error,再找出Error后面的四个字母,如果这四个字母恰好是,“Mode",那么就不匹配这个。kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
如果不需要控制匹配始点终点或者有另外的方式控制它的话,也还是有办法的。先把Error匹配了,后面的再分四支,第一去是不以M开头的,第二支是M后不掉o的,第三支是Mo后面不接d的,第四支是Mod后面不接e的。这个方法原比使用那个所谓的向后环视要丑。kardinal 写了:不知道他的应用情景,比如渲染语法高亮的话,接口只接受正则表达式,那就不太好弄Fermat618 写了:那你用Emacs的方法来实现一个呗。自定义个匹配函数,先用原来的字符匹配方法找到Error,再找出Error后面的四个字母,如果这四个字母恰好是,“Mode",那么就不匹配这个。kardinal 写了:关键是他的这个问题 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/
你说对了,制作日志高亮脚本。kardinal 写了:不知道他的应用情景,比如渲染语法高亮的话,接口只接受正则表达式,那就不太好弄Fermat618 写了:那你用Emacs的方法来实现一个呗。自定义个匹配函数,先用原来的字符匹配方法找到Error,再找出Error后面的四个字母,如果这四个字母恰好是,“Mode",那么就不匹配这个。kardinal 写了:关键是他的这个问题 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