2011-06-26 2 views
3

なぜパターンにカッコで囲まれたグループが含まれていると、exprの結果が異なるのはなぜですか?

$ echo `expr match abcdef 'abc'` 

所与の3でマッチした文字の数、が、

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

がマッチした文字を与え、ABCがありますか?

ここでは正規表現のマッチングが行われていることを理解していますが、ここで括弧で囲まれた部分式がどのようにこの違いを作り出しているのか理解できません。

答えて

2

。コマンド "expr"がどのように動作するかは、違いに過ぎません。最初のものは一致する部分文字列の長さを返し、2番目のものは一致する部分文字列自体を返します。

非常に良い要約があります:TLDP refcardです。 exprがどのように使われるかの組み合わせの要約が見つかります。

+0

これはすばらしい便利なリファレンスカードです –

7

これはexprのmanページからです:

正規表現とは何の関係もありません

Pattern matches return the string matched between \(and \) or null; if \(and \) are not used, they return the number of characters matched or 0.

Man page.

+0

マニュアルページにはこれが書かれています。しかし、なぜそれはこのように振る舞いますか?この動作の根本原因は何ですか?これを正規表現の使い方で説明できますか? – abc

+0

@abc:exprが動作するようにプログラムされた方法です。それ以上のことはありません。 –

関連する問題