0

私は正規表現を書く初心者です

このTST0101201304-123.txtのようなファイル名があり、私の目標は「-」「.txt」の間の数字を取得することです

この式を書いたので-([0-9]*)\.txt、これで必要な数値が得られますが、さらに、ハイフィン「-」と文字列の最後の部分も「.txt」を取得しているため、上記の例の結果は「-123」です。TXT'

だから私の質問は:

UNIX用のシェルスクリプトコードでトリムする必要なく、一致のサブマッチのように、正規表現で一致した文字列の一部のみを取得する方法はありますか?

私はこの答えを見つけましたが、同じ結果を得ています: 正規表現: 文字列の一部を切り取り、残っているものを返す

ヒント: 私の正規表現をテストするには、このWeb サイトを使用します

4

3 に答える 3

2

後読みと先読みを使用できます

(?<=-)[0-9]*(?=[.]txt)

Unixで動くかは不明

于 2013-07-08T05:31:18.230 に答える
1

セッドはあなたの友達です。

echo filename | sed -e 's/-\([0-9]*\)/\1'

あなたが望むものを手に入れるはずです。

于 2013-07-08T05:31:48.063 に答える