Regex 当模式(非)包含括号组时,为什么expr匹配输出不同的内容?
为什么Regex 当模式(非)包含括号组时,为什么expr匹配输出不同的内容?,regex,linux,bash,pattern-matching,Regex,Linux,Bash,Pattern Matching,为什么 $ echo `expr match abcdef 'abc'` 给出匹配的字符数,即3,但 $ echo `expr match abcdef '\(abc\)'` 给出匹配的字符,哪一个是abc 我知道正则表达式匹配在这里起作用,但无法理解括号中的子表达式是如何在这里产生这种差异的?这是来自expr的手册页: 模式匹配返回\(和\)之间匹配的字符串或null;如果未使用\(和\),则返回匹配的字符数或0。 与正则表达式无关的。命令“expr”的工作方式不同。第一个返回匹配子字符串
$ echo `expr match abcdef 'abc'`
给出匹配的字符数,即3,但
$ echo `expr match abcdef '\(abc\)'`
给出匹配的字符,哪一个是abc
我知道正则表达式匹配在这里起作用,但无法理解括号中的子表达式是如何在这里产生这种差异的?这是来自expr的手册页:
模式匹配返回\(和\)之间匹配的字符串或null;如果未使用\(和\),则返回匹配的字符数或0。
与正则表达式无关的。命令“expr”的工作方式不同。第一个返回匹配子字符串的长度,第二个返回匹配子字符串本身
有一个很好的总结:。您可以找到如何使用expr的组合摘要。同意,手册页上这样说。但为什么会这样呢?这种行为的根本原因是什么?我们可以用正则表达式的用法来解释这一点吗?@abc:这就是expr的编程方式。没有别的了。