Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 邪恶模式下的Emacs和正则表达式_Regex_Emacs_Evil Mode - Fatal编程技术网

Regex 邪恶模式下的Emacs和正则表达式

Regex 邪恶模式下的Emacs和正则表达式,regex,emacs,evil-mode,Regex,Emacs,Evil Mode,在邪恶模式下使用Emacs,我遇到了包含\ \的正则表达式的问题,例如 /TAG1\_.\{-}TAG2 /TAG1\_s*TAG2 例如,第一个正则表达式在Vim中用于查找TAG1和TAG2之间的任何文本块,包括空格和新行。它会匹配的 TAG1 text more text TAG2 然而,在Emacs邪恶模式下,只要我键入\ \,就会收到一条过早结束正则表达式的错误消息。另外 不带\ \的搜索,如 按预期工作,因此问题特别是\ \的问题。我试着玩一些邪恶的团体设置,但没有用。有没有迹象

在邪恶模式下使用Emacs,我遇到了包含\ \的正则表达式的问题,例如

/TAG1\_.\{-}TAG2
/TAG1\_s*TAG2
例如,第一个正则表达式在Vim中用于查找TAG1和TAG2之间的任何文本块,包括空格和新行。它会匹配的

TAG1
text

more text TAG2
然而,在Emacs邪恶模式下,只要我键入\ \,就会收到一条过早结束正则表达式的错误消息。另外 不带\ \的搜索,如

按预期工作,因此问题特别是\ \的问题。我试着玩一些邪恶的团体设置,但没有用。有没有迹象表明问题出在哪里


注意:无论我是否使用GUI,问题都会发生。在Vim中,我没有遇到任何类型的问题

这不是邪恶模式的问题,在emacs正则表达式中\有一个特殊的含义。来自emacs

\有两个函数:它引用包括“\”在内的特殊字符,并引入其他特殊构造

因为“\”引用特殊字符,“\$”是只匹配“$”的正则表达式,“[”是只匹配“[”的正则表达式,依此类推

您必须转义\,因此要搜索标记\需要输入regexp标记\\


您可能会发现该页面对于学习elisp正则表达式非常有用。

这不是邪恶模式的问题,在emacs正则表达式中\具有特殊含义。来自emacs

\有两个函数:它引用包括“\”在内的特殊字符,并引入其他特殊构造

因为“\”引用特殊字符,“\$”是只匹配“$”的正则表达式,“[”是只匹配“[”的正则表达式,依此类推

您必须转义\,因此要搜索标记\需要输入regexp标记\\


您可能会发现该页面对于学习elisp正则表达式非常有用。

如果您在回复@Iqbal时说,您试图匹配TAG1,后跟零个或多个空格字符或换行符,后跟TAG2,那么在Emacs中,该页面的regexp是这样写的: TAG1[\n]*TAG2


是的,您有义务阅读本手册的regexp部分。不同的语言处理regexp的方式不同,Emacs Lisp也不例外。

如果您在回复@Iqbal时说,您试图匹配TAG1,后跟零个或多个空格字符或换行符,后跟TAG2,那么在Emacs中,您就需要匹配一个regexpt是这样写的: TAG1[\n]*TAG2


是的,您有义务阅读手册中的regexp部分。不同的语言处理regexp的方式不同,Emacs Lisp也不例外。

当表达式只是\ \时,它与什么匹配?通常不需要转义。一些自制引擎使用类似的功能来表示当表达式只是/\ \表示输入不完整。如果使用\ \而不转义,它将被视为任何其他字符,如预期的那样:例如/TAG1\u s*TAG2找到字符串TAG1\u sTAG2,但我想找到的是TAG1 TAG2!当表达式只是\ \时,它匹配什么?通常不需要转义。一些自制引擎使用类似这样的功能来表示meta-ex示例\当表达式只是/\ \时,它表示输入不完整。如果使用\而不转义,它将被视为任何其他字符,如预期的那样:例如/TAG1\u s*TAG2找到字符串TAG1\u sTAG2,但我想找到的是TAG1 TAG2!感谢您的回答,Iqbal。但是,我没有搜索标记\。Vim中类似于/TAG1\us*TAG2的正则表达式尝试查找序列TAG1TAG2,其中TAG1和TAG2可能被任意数量的空格或新行分隔。这是我在邪恶模式下想要的行为…并且它不是通过再次转义来实现的,即/TAG1\\\ s*TAG2不起作用。为了清晰起见,我编辑了我的原始问题。再次感谢链接,我正在查看它,也许我会找到s解决方法。@summer要匹配搜索替换中的换行符,需要键入C-q C-j,以便regexp可以是TAG1[[:space:]^j]*TAG2按C-q C-j进入^j谢谢你的回答,Iqbal。但是,我没有搜索TAG\。Vim中类似于/TAG1\\u s*TAG2的正则表达式试图找到序列TAG1TAG2,其中TAG1和TAG2可能被任意数量的空格或新行分隔。这是我在邪恶模式下想要的行为…并且它不能通过再次转义来实现,i、 e./TAG1\\\\u s*TAG2不起作用。为了清楚起见,我已经编辑了我的原始问题。再次感谢链接,我正在查看它,也许我会在那里找到解决方案。@summer要匹配搜索替换中的换行符,您需要键入C-q C-j,以便regexp可以是TAG1[:space:^j]*TAG2按C-q C-j输入^j谢谢你的回答@Drew。当然,这并不是我想省去阅读Emacs regexp部分的麻烦。令人困惑的是,我认为,因为我使用的是邪恶模式,我必须处理
正则表达式与Vim中的正则表达式一模一样,我是一个非常新的Emacs用户。我知道事实并非如此,我感谢你和伊克巴尔为我指明了正确的方向;我理解。总的来说,Emacs有自己的做事方式——有时是出于很好的理由,有时主要是为了歇斯底里的葡萄干。但是Emacs非常擅长的一件事是帮助您理解它。我对任何了解Emacs的人的第一个建议是:询问Emacs。近40年来,它一直标榜自己是自我记录的,这证明解释自己至少是它认真对待的事情。它通常做得很好。gateway正在学习从C-h C-h可以获得什么,以及如何在两本Emacs手册中使用。祝你愉快。谢谢你的回答@Drew。当然,我并不想省去阅读Emacs regexp部分的麻烦。令人困惑的是,我认为,因为我使用的是邪恶模式,我必须像在Vim中一样处理正则表达式,我是一个新的Emacs用户。我知道事实并非如此,我感谢你和伊克巴尔为我指明了正确的方向;我理解。总的来说,Emacs有自己的做事方式——有时是出于很好的理由,有时主要是为了歇斯底里的葡萄干。但是Emacs非常擅长的一件事是帮助您理解它。我对任何了解Emacs的人的第一个建议是:询问Emacs。近40年来,它一直标榜自己是自我记录的,这证明解释自己至少是它认真对待的事情。它通常做得很好。gateway正在学习从C-h C-h可以获得什么,以及如何在两本Emacs手册中使用。享受
/TAG1\n*TAG2