2つの文字列間の文字列の検索

2つの文字列間の文字列の検索

2つの文字列の中間にある部分文字列を抽出しようとしています。このgrepコマンドを実行します。

echo "http://www.miweb.es/midoc-87-documento-texto_mf_4150310_1.txt" | grep -Po "(?<=midoc-).*(?=-)"

Result
87-documento

しかし、私は「87-documento」ではなく「87」を取得したいと思います。

ありがとうございます。

答え1

non-greedyに切り替えるには、?後に追加してください。*

答え2

この試み:

echo "http://www.miweb.es/midoc-87-documento-texto_mf_4150310_1.txt" | grep -Po "(?<=midoc-).."

私は次のような結果を得ます。

[root@tomcat7test ~]# echo "http://www.miweb.es/midoc-87-documento-texto_mf_4150310_1.txt" | grep -Po "(?<=midoc-).."
87
[root@tomcat7test ~]#

関連情報