gpt4 book ai didi

regex - 有人可以解释一下这个elisp正则表达式吗

转载 作者:行者123 更新时间:2023-12-01 23:03:19 25 4
gpt4 key购买 nike

有人可以解释一下我在 ediff-trees.el 中找到的以下正则表达式,作为从比较过程中排除哪些文件/目录的规范。

"\\`\\(\\.?#.*\\|.*,v\\|.*~\\|\\.svn\\|CVS\\|_darcs\\)\\'"

尽管我对遇到这种基于 elisp 字符串的变体的正则表达式有些熟悉,但还是让我失望了。

最佳答案

首先,请记住,elisp 的正则表达式必须是字符串转义的,这会产生很多额外的反斜杠。删除它们,我们得到

\`\(\.?#.*\|.*,v\|.*~\|\.svn\|CVS\|_darcs\)\'

然后,\( 和\) 表示分组,“foo\|bar”表示“要么是foo,要么是bar”。

因此,一个接一个地,这个正则表达式匹配:一个 emacs 临时文件(以 # 开头,可能前面有一个句点:.?#.),或者一个 RCS 文件(以 ,v: .,v 结尾),或者一个emacs 备份文件(以 ~: .*~ 结尾),或 svn 目录 (.svn),或 cvs 目录 (CVS),或 darcs 目录 (_darcs)。

编辑以更正:如 andre-r正确指出,反引号\` 和单引号\' 基本上意味着“字符串的开头和结尾”(分别)。所以这意味着正则表达式会找到与我上面概述的选项之一完全匹配的字符串(即,字符串开始,然后是这些选项之一,然后字符串结束)。我之前说过他们的意思是引用,我不知道我在想什么:)。谢谢安德烈-r!

关于regex - 有人可以解释一下这个elisp正则表达式吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3504445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com