プロが教える店舗&オフィスのセキュリティ対策術

$ 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の正規表現での最左最短マッチングはできないのでしょうか?

教えて!goo グレード

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で質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング