分页: 2 / 2

Re: Emacs的正则表达式不支持负向预查?

发表于 : 2012-02-15 22:11
kardinal
关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?

Re: Emacs的正则表达式不支持负向预查?

发表于 : 2012-02-15 22:46
lilydjwg
kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
要是 Emacs 真的办不到的话就只能想别的办法了。这么来说 Emacs 的正则不是很强大?不知道效率上会不会飞快呢。

Re: Emacs的正则表达式不支持负向预查?

发表于 : 2012-02-15 23:00
Fermat618
kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
那你用Emacs的方法来实现一个呗。自定义个匹配函数,先用原来的字符匹配方法找到Error,再找出Error后面的四个字母,如果这四个字母恰好是,“Mode",那么就不匹配这个。

Re: Emacs的正则表达式不支持负向预查?

发表于 : 2012-02-15 23:43
kardinal
lilydjwg 写了:
kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
要是 Emacs 真的办不到的话就只能想别的办法了。这么来说 Emacs 的正则不是很强大?不知道效率上会不会飞快呢。
正则只是方便而已,就算 perl 的正则,肯定也有不能处理的问题吧

Re: Emacs的正则表达式不支持负向预查?

发表于 : 2012-02-15 23:46
kardinal
Fermat618 写了:
kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
那你用Emacs的方法来实现一个呗。自定义个匹配函数,先用原来的字符匹配方法找到Error,再找出Error后面的四个字母,如果这四个字母恰好是,“Mode",那么就不匹配这个。
不知道他的应用情景,比如渲染语法高亮的话,接口只接受正则表达式,那就不太好弄

Re: Emacs的正则表达式不支持负向预查?

发表于 : 2012-02-16 0:07
Fermat618
kardinal 写了:
Fermat618 写了:
kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
那你用Emacs的方法来实现一个呗。自定义个匹配函数,先用原来的字符匹配方法找到Error,再找出Error后面的四个字母,如果这四个字母恰好是,“Mode",那么就不匹配这个。
不知道他的应用情景,比如渲染语法高亮的话,接口只接受正则表达式,那就不太好弄
如果不需要控制匹配始点终点或者有另外的方式控制它的话,也还是有办法的。先把Error匹配了,后面的再分四支,第一去是不以M开头的,第二支是M后不掉o的,第三支是Mo后面不接d的,第四支是Mod后面不接e的。这个方法原比使用那个所谓的向后环视要丑。

Re: Emacs的正则表达式不支持负向预查?

发表于 : 2013-04-18 19:09
gamesun
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/
这个方法可以,但是不适用现在的Emacs 24版本,这里有针对Emacs 24.2的环视补丁:
http://www.cnblogs.com/gamesun/archive/ ... 93382.html

Re: Emacs的正则表达式不支持负向预查?

发表于 : 2014-08-05 16:51
shada
kardinal 写了:
Fermat618 写了:
kardinal 写了:关键是他的这个问题 emacs 的正则不好办啊
要不给点提示?
那你用Emacs的方法来实现一个呗。自定义个匹配函数,先用原来的字符匹配方法找到Error,再找出Error后面的四个字母,如果这四个字母恰好是,“Mode",那么就不匹配这个。
不知道他的应用情景,比如渲染语法高亮的话,接口只接受正则表达式,那就不太好弄
你说对了,制作日志高亮脚本。

Re: Emacs的正则表达式不支持负向预查?

发表于 : 2014-08-05 16:52
shada
gamesun 写了:
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/
这个方法可以,但是不适用现在的Emacs 24版本,这里有针对Emacs 24.2的环视补丁:
http://www.cnblogs.com/gamesun/archive/ ... 93382.html
已经转vim了。