elisp 正则表达式模式中的双转义字符
Double escape characters in elisp regex patterns
(regexp-opt '("this" "that"))
returns,
"\(?:th\(?:at\|is\)\)
为什么这个 elisp 正则表达式中到处都是双反斜杠。 elisp 正则表达式不使用单反斜杠吗?
还有,?符号是正则表达式模式中的后缀运算符,这意味着它作用于它前面的字符..(http://www.gnu.org/software/emacs/manual/html_node/elisp/Regexp-Special.html#Regexp-Special)。但是在这里,在 ? 之前没有表达式。操作员。那么,什么
(?:th\
此正则表达式中的部分意思。
反斜杠是正则表达式语法的一部分。但是要将其保留为正则表达式字符串的一部分,您需要使用另一个反斜杠来保护它,如 syntax for strings documentation:
中所述
'Likewise, you can include a backslash by preceding it with another backslash, like this: "this \ is a single embedded backslash".'
至于 ?:
构造,它是您指定非捕获或 "shy" 组的方式:
"A shy group serves the first two purposes of an ordinary group (controlling the nesting of other operators), but it does not get a number, so you cannot refer back to its value with ‘\digit’. Shy groups are particularly useful for mechanically-constructed regular expressions, because they can be added automatically without altering the numbering of ordinary, non-shy groups."
它被记录为 regexp backslash documentation 的一部分。正如上面引用的段落所解释的那样,它在 regexp-opt
这样的函数中很有用,可以在不创建捕获组的情况下对模式进行分组。
(regexp-opt '("this" "that"))
returns,
"\(?:th\(?:at\|is\)\)
为什么这个 elisp 正则表达式中到处都是双反斜杠。 elisp 正则表达式不使用单反斜杠吗?
还有,?符号是正则表达式模式中的后缀运算符,这意味着它作用于它前面的字符..(http://www.gnu.org/software/emacs/manual/html_node/elisp/Regexp-Special.html#Regexp-Special)。但是在这里,在 ? 之前没有表达式。操作员。那么,什么
(?:th\
此正则表达式中的部分意思。
反斜杠是正则表达式语法的一部分。但是要将其保留为正则表达式字符串的一部分,您需要使用另一个反斜杠来保护它,如 syntax for strings documentation:
中所述'Likewise, you can include a backslash by preceding it with another backslash, like this: "this \ is a single embedded backslash".'
至于 ?:
构造,它是您指定非捕获或 "shy" 组的方式:
"A shy group serves the first two purposes of an ordinary group (controlling the nesting of other operators), but it does not get a number, so you cannot refer back to its value with ‘\digit’. Shy groups are particularly useful for mechanically-constructed regular expressions, because they can be added automatically without altering the numbering of ordinary, non-shy groups."
它被记录为 regexp backslash documentation 的一部分。正如上面引用的段落所解释的那样,它在 regexp-opt
这样的函数中很有用,可以在不创建捕获组的情况下对模式进行分组。