Regex 为什么打开大括号可以转义而关闭大括号不能?
: 因为我们想要做的不仅仅是搜索文本的文字片段,我们需要保留某些字符以供特殊使用。在本教程讨论的正则表达式中,有12个具有特殊含义的字符:反斜杠\、插入符号^、美元符号$、句点或圆点、竖条或管道符号|、问号?、星号或星号*、加号+、左括号(、右括号)、左方括号[,和开头的大括号{,这些特殊字符通常被称为“元字符”。它们中的大多数单独使用时都是错误的Regex 为什么打开大括号可以转义而关闭大括号不能?,regex,Regex,: 因为我们想要做的不仅仅是搜索文本的文字片段,我们需要保留某些字符以供特殊使用。在本教程讨论的正则表达式中,有12个具有特殊含义的字符:反斜杠\、插入符号^、美元符号$、句点或圆点、竖条或管道符号|、问号?、星号或星号*、加号+、左括号(、右括号)、左方括号[,和开头的大括号{,这些特殊字符通常被称为“元字符”。它们中的大多数单独使用时都是错误的 为什么打开的大括号可以转义,而关闭的大括号不能转义?它毕竟有特定于正则表达式的含义。因为它不是必需的。当关闭大括号有特殊含义时,文字关闭大括号无论如
为什么打开的大括号可以转义,而关闭的大括号不能转义?它毕竟有特定于正则表达式的含义。因为它不是必需的。当关闭大括号有特殊含义时,文字关闭大括号无论如何都不会出现:
foo{2,3}
匹配“fooo”和“fooo”,而foo\{2,3}
匹配“foo{2,3}”
foo{2,3\}
是什么意思?在以{
开头的量词中,只能出现数字和逗号。因为它是不需要的。如果右大括号有特殊含义,则文字右大括号无论如何都不能出现:
foo{2,3}
匹配“fooo”和“fooo”,而foo\{2,3}
匹配“foo{2,3}”
foo{2,3\}
是什么意思?在以{
开头的量词中,只能出现数字和逗号。更准确地说,它是说:
左括号(
…左括号[
,右括号
单独使用时,打开大括号是错误的
这是正确的,因为当大多数引擎在遍历正则表达式时遇到一个左括号时,它对他们来说不仅仅意味着一个文字字符,所以他们试图寻找结束对,否则这是一个语法错误。直到现在,他们还没有从末尾解析正则表达式,为未配对的结束括号抛出一个错误。更准确地说事实上,它是这样说的: 左括号
(
…左括号[
,右括号
单独使用时,打开大括号是错误的
这是正确的,因为当大多数引擎在遍历正则表达式时遇到一个左括号时,它对他们来说不仅仅意味着一个文字字符,所以他们试图寻找结束对,否则这是一个语法错误。直到现在,他们还没有从结尾处解析正则表达式,为未配对的结束括号抛出一个错误。您的语句t关闭的大括号不能转义的说法是错误的。除了使用不必要的转义外,编写
\}
而不是}
没有什么错。但是,永远不需要转义}
如L3viathan的回答中所述。相关:您关于关闭大括号不能转义的陈述是不正确的。除了使用不必要的转义外,编写\}
而不是}
没有什么错。但是,不需要像L3viathan的回答中所解释的那样转义
。相关: