Emacs的正则表达式不支持负向预查?
-
- 帖子: 397
- 注册时间: 2006-09-27 11:17
- 联系:
Emacs的正则表达式不支持负向预查?
\(Error\)((?!Mode).)+
想匹配LastError中的Error,而不匹配ErrorMode中的Error。
大虾们,帮忙想个办法呀?
想匹配LastError中的Error,而不匹配ErrorMode中的Error。
大虾们,帮忙想个办法呀?
- tangboyun
- 帖子: 701
- 注册时间: 2009-07-25 1:57
- 联系:
Re: Emacs的正则表达式不支持负向预查?
只要区别这两个的话 用\w和\b的组合来显式指定断词的地方即可。
https://github.com/tangboyun
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
-
- 帖子: 397
- 注册时间: 2006-09-27 11:17
- 联系:
- tangboyun
- 帖子: 701
- 注册时间: 2009-07-25 1:57
- 联系:
Re: Emacs的正则表达式不支持负向预查?
http://cx4a.org/hack/emacs-regexp-extension.html
Emacs Regexp Extension
Emacs Regexp Extension
代码: 全选
Lookaround:
Positive Lookahead \(?=...\)
Negative Lookahead \(?!...\)
Positive Lookbehind \(?<=...\)
Negative Lookbehind \(?<!...\\)
代码: 全选
$ bzr branch http://cx4a.org/repo/emacs.bzr/regexp/
https://github.com/tangboyun
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
-
- 帖子: 397
- 注册时间: 2006-09-27 11:17
- 联系:
- Fermat618
- 帖子: 728
- 注册时间: 2008-12-28 16:01
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- josephyoung
- 帖子: 158
- 注册时间: 2011-11-05 18:53
- 来自: 南极圈
Re: Emacs的正则表达式不支持负向预查?
请问vim里的这个正则怎么写Fermat618 写了:vim正则表达式可以做
-
- 帖子: 750
- 注册时间: 2006-03-19 11:39
Re: Emacs的正则表达式不支持负向预查?
交互的时候输入这么长的正则纯属自虐shada 写了:\(Error\)((?!Mode).)+
想匹配LastError中的Error,而不匹配ErrorMode中的Error。
大虾们,帮忙想个办法呀?
编程的时候总可以通过其它办法来解决,
最简单的,把errormode替换成其它未出现的过词,再处理其它 error
完事再替换回来
- Fermat618
- 帖子: 728
- 注册时间: 2008-12-28 16:01
Re: Emacs的正则表达式不支持负向预查?
josephyoung 写了:请问vim里的这个正则怎么写Fermat618 写了:vim正则表达式可以做
代码: 全选
Error\(Mode\)\@!
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
-
- 帖子: 397
- 注册时间: 2006-09-27 11:17
- 联系:
Re: Emacs的正则表达式不支持负向预查?
不是交互,我是在写一个log-mode,替换法可以解决问题,但是不优雅。kardinal 写了:交互的时候输入这么长的正则纯属自虐
编程的时候总可以通过其它办法来解决,
最简单的,把errormode替换成其它未出现的过词,再处理其它 error
完事再替换回来
我想想其它办法。
- tangboyun
- 帖子: 701
- 注册时间: 2009-07-25 1:57
- 联系:
Re: Emacs的正则表达式不支持负向预查?
那就装那个插件罗,装插件还不是稀松平常地事。
https://github.com/tangboyun
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
- josephyoung
- 帖子: 158
- 注册时间: 2011-11-05 18:53
- 来自: 南极圈
Re: Emacs的正则表达式不支持负向预查?
我试了下匹配不出来,请问您这个里面的@!是什么意思,我没有见过正则里这种用法Fermat618 写了:josephyoung 写了: 请问vim里的这个正则怎么写代码: 全选
Error\(Mode\)\@!
-
- 帖子: 750
- 注册时间: 2006-03-19 11:39
Re: Emacs的正则表达式不支持负向预查?
针对特定的问题,其实可以自己弄个解析引擎。正则这种通用搜索引擎效率并不高,带负向预查的正则效率就更低了shada 写了:不是交互,我是在写一个log-mode,替换法可以解决问题,但是不优雅。kardinal 写了:交互的时候输入这么长的正则纯属自虐
编程的时候总可以通过其它办法来解决,
最简单的,把errormode替换成其它未出现的过词,再处理其它 error
完事再替换回来
我想想其它办法。
- lilydjwg
- 论坛版主
- 帖子: 4250
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: Emacs的正则表达式不支持负向预查?
有些问题并不需要太高的效率,通用性反而比较重要。比如在配置里用正则的时候。总不可能为了本来正则能搞定的事去动用 lex 它们吧。kardinal 写了:针对特定的问题,其实可以自己弄个解析引擎。正则这种通用搜索引擎效率并不高,带负向预查的正则效率就更低了shada 写了:不是交互,我是在写一个log-mode,替换法可以解决问题,但是不优雅。kardinal 写了:交互的时候输入这么长的正则纯属自虐
编程的时候总可以通过其它办法来解决,
最简单的,把errormode替换成其它未出现的过词,再处理其它 error
完事再替换回来
我想想其它办法。