アプリ版:「スタンプのみでお礼する」機能のリリースについて

$ echo "Abcde cdef" | awk '{print match($0, "b.+e"); print RLENGTH}'
を実行すると、最左最長マッチングで、
2
8
となりますが、
$ echo "Abcde cdef" | awk '{print match($0, "b.+?e"); print RLENGTH}'
を実行すると、最左最短マッチングで、
2
4
となるように思うのですが、結果は、
2
8
となるみたいです。
awkの正規表現での最左最短マッチングはできないのでしょうか?

A 回答 (3件)

お手持ちの環境にて man awk としたときに


説明の中で「正規表現は egrep(1) と同じ」等と表示された場合は、
使える表現は拡張正規表現(ERE)までとなり、
Perl互換正規表現(PCRE)の表現である最短マッチはできません。
    • good
    • 1

未経験者ですがググってみると一般的な最短マッチは実装されてない感じみたいですね。



$ echo "Abcde cdef" | awk '{print match($0, "b[^e]+e"); print RLENGTH}'
2
4

否定にしたらこんな感じでした。(自信はありません)
    • good
    • 0

一般的にはできなさそうだけどあなたの使っている awk でできるかどうかはわからないのでマニュアルを読むべし.

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!