regex - 当模式(不)包含带括号的组时,为什么 expr match 输出不同的东西?

标签 regex linux bash pattern-matching

为什么

$ echo `expr match abcdef 'abc'`

给出匹配的字符数,即3,但是

$ echo `expr match abcdef '\(abc\)'`

给出匹配的字符,是abc ?

我知道正则表达式匹配在这里发挥作用,但不明白带括号的子表达式如何在这里产生这种差异?

最佳答案

这是来自 expr 的手册页:

模式匹配返回在\(和\)之间匹配的字符串或null;如果不使用\( 和\),它们返回匹配的字符数或 0。

Man page.

关于regex - 当模式(不)包含带括号的组时,为什么 expr match 输出不同的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6486965/

相关文章:

python - 用于捕获由表达式分隔的组的正则表达式

linux - 如果一个文件在边沿触发调用epoll_ctl之前是可读的,那么后续的epoll_wait是否会立即返回?

linux - 如何在没有网络的情况下在CentOS 6.3上升级开发者工具?

bash - 使用 FFmpeg 有条件地旋转风景的纵向视频

python - 正则表达式捕获 '/etc/services'

ruby - 结合正则表达式和一组值(散列/数组)来比较字符串是否在 ruby​​ 中匹配

linux - 如何用 sed 删除空的重复行?

bash - 在 "for"循环 BASH 中回显 $variable$counter

linux - 在 Linux 脚本中接收 "curl: (3) Illegal characters found in URL"

regex - 如何匹配第一对方括号内的所有内容