1

以前に生成されたファイル名のリストから、フレーム シーケンスの一部である可能性があるファイル名を取得するには、正規表現文字列の助けが必要です。

シーケンス内のフレームは、通常、最小パディングが 3 で、先頭に a'.'または aが付き'_'ます。例外: ファイル名が数字と.jpg拡張子のみで構成されている場合 (例:0001.jpgなど0002.jpg)。可能であれば、これらすべてを 1 行の正規表現でキャプチャしたいと思います。

これが私がこれまでに持っているものです:

(.*?)(.|_)(\d{3,})(.*)\.jpg

これで、 「 orが先行する」._ビットは実行されず、代わりに文字列内の.orを検索して正を返すことがわかりました。_否定的な後読みテストを少し試しましたが、構文が機能しません。

データのサンプルは次のとおりです。

test_canon_shot02.jpg 
test_shot01-04.jpg 
test_shot02-03.jpg 
test_shot02-02.jpg 
test_shot01-03.jpg 
test_canon_shot03.jpg 
test_shot01-02.jpg 
test_shot02.jpg
test_canon_shot02.jpg
test_shot01.jpg 
GameAssets_.00024.jpg 
GameAssets_.00023.jpg 
GameAssets_.00022.jpg 
GameAssets_.00021.jpg 
GameAssets_.00020.jpg 
GameAssets_.00019.jpg 
GameAssets_.00018.jpg 
GameAssets_.00017.jpg 
GameAssets_.00016.jpg 
GameAssets_.00015.jpg 
GameAssets_.00014.jpg 
GameAssets_.00013.jpg 
GameAssets_.00012.jpg 
GameAssets_.00011.jpg 
GameAssets_.00010.jpg 
GameAssets_.00009.jpg 
GameAssets_.00008.jpg 
GameAssets_.00007.jpg 
GameAssets_.00006.jpg 
GameAssets_.00005.jpg 
GameAssets_.00004.jpg 
GameAssets_.00003.jpg 
GameAssets_.00002.jpg 
GameAssets_.00001.jpg 
GameAssets_.00000.jpg 
OrangeXmas2015_Print_A ct2.jpg 
sh120_HF_V01-01.jpg 
sh120_HF_V01-02.jpg 
sh200_DMP_v04.jpg  
sh120_HF_V04.jpg 
sh120_HF_V03.jpg 
sh120_HF_V02.jpg 
blah_v02.jpg 
blah_v01.jpg 
blah_Capture0 4.jpg 
blah_Capture03 .jpg 
blah_Capture01. jpg 
blah_Capture02.jpg 
Wall_GraniteBlock_G rey_TC041813.jpg
Renders10_wire.jpg 
Renders10.jpg 
Renders09_wire.jpg 
Renders09.jpg 
Renders08_wire.jpg 
Renders08.jpg 
Renders07_wire.jpg 
Renders07.jpg 
Renders06_wire.jpg 
Renders06.jpg 
Renders05_wire.jpg 
Renders05.jpg 
Renders04_wire.jpg 
Renders04.jpg  
Renders03_wire.jpg 
Renders03.jpg 
Renders02_wire.jpg 
Renders02.jpg 
Renders01_wire.jpg 
Renders01.jpg 
archmodels58_057_carpinusbetulus_leaf_diffuse.jpg 
archmodels58_042_bark_bump.jpg 
archmodels58_023_leaf_diffuse.jpg 
WINDY TECHNICZNE-reflect00.jpg 
archmodels58_057_leaf_opacity.jpg 
archmodels58_057_bark_reflect.jpg 
archmodels58_057_bark_bump.jpg 
blahC-00-oknaka.jpg 
bed 
debt 
cab 
00018.jpg 
00017.jpg 
00016.jpg 
00015.jpg 
00014.jpg 
00013.jpg 
00012.jpg 
00011.jpg 
00010.jpg 
00009.jpg 
00008.jpg 
00007.jpg  
00006.jpg 
00005.jpg 
00004.jpg 
00003.jpg 
00002.jpg 
00001.jpg 
00000.jpg    

私が求めている結果は、識別された 2 つのシーケンスです。

  1. GameAssets_.00000.jpgGameAssets_.00024.jpg
  2. 00000.jpg00018.jpg
4

3 に答える 3

1

質問で指定したルールに基づいて、このパターンは必要なものを達成する必要があります。

(^|\r?\n|.*_|.*\.)\d{3,}.*\.jpg
于 2015-10-28T16:23:10.903 に答える
0

試す

(.*?)(\.|_?)(000\d{0,})(.*)\.jpg

'.'2 番目のグループでをエスケープする必要があることに注意してください。また、2 番目のグループで検索を'.'オプション'_'にする必要がありました。最後に、3 番目のグループに最小限のパディングを追加する必要がありました。

regex101.com を使用して正規表現をテストおよび改良しました: regex101

于 2015-10-28T16:53:19.013 に答える