0

正規表現の作成についてサポートが必要です。次に2つのサンプル文字列を示します。

/path/to/file.jpg
/path/to/file.type.jpg

それぞれ、私はキャプチャしようとしています:

file.jpg
file.type.jpg

しかし、私は3つを別々の文字列としてキャプチャしたいと思います。

file,jpg
file,type,jpg

私は期間をキャプチャしていないことに注意してください。私はこのようなものがうまくいくと思いました(新しい行を除く):

([a-z]+)\.
[([a-z]+)[\.]{1}]?
([a-z]{3})

ガイダンスをいただければ幸いです。それを適切にキャプチャするために使用する必要がある別の変更があるかどうか疑問に思っています。

ちなみに、上記の式はエラーになります:(

4

4 に答える 4

1

"\/(?:\w+\/)+(\w+)\.?(\w+)?\.(\w+)"正規表現として使用できます。

編集:ドットが一致しないことについて読んでいませんでした。

ライブデモ

于 2012-10-26T22:00:41.167 に答える
1

使用する必要があります: /(\w+)(\.(\w+))?\.(\w+){3,4}\b

次に、グループ1、3、および4をキャプチャすると、次のようになります。file(1)type(3)およびjpg / pngwhatever(4)

分解されたグループ:

  1. (\w+) -1つ以上の単語文字に一致します(次のように言うのと同じです:{1, }
  2. (\.(\w+))?-3番目のグループに一致し、前にドットがあり、グループ全体をオプションにします(?
  3. (\w+)-gr1として
  4. (\w{3,4})\b--3または4語の文字({3,4})を一致させ、それらの文字の後に他の文字がないことを確認します(単語の終わり--- \b!サポートされている場合!)
于 2012-10-26T22:05:51.087 に答える
1

この正規表現は機能するはずです:

/(\w+)\.(\w+)(?:\.(\w+))?$/

ライブデモ

于 2012-10-26T22:19:45.623 に答える
1

パターンを使用することをお勧めします

\/([^.]+)\.?([^.]+|)\.([^.]+)$

そして、3つのグループがあります:ファイル、タイプ(存在しない場合は空になります)、拡張子

于 2012-10-26T23:11:09.910 に答える