Мне нужна помощь с строкой регулярного выражения, чтобы вытащить любое имя файла, похожее на то, что оно может быть частью последовательности кадров из ранее сгенерированного списка имен файлов.regex, чтобы найти последовательности изображений из списка имен файлов
кадров в последовательности, как правило, имеют минимальный отступ 3, и будет предваряться либо '.'
или '_'
Исключение: если имя файла состоит только из ряда и расширение .jpg
(например 0001.jpg
, 0002.jpg
, и т.д.). Я бы хотел записать все это в одной строке регулярного выражения, если это возможно.
Вот что я до сих пор:
(.*?)(.|_)(\d{3,})(.*)\.jpg
Теперь я знаю, что это не делает «предваряется .
или _
» бита, а вместо этого просто находит .
или _
в любом месте строки в положительный результат. Я пробовал немного отрицательного тестирования lookbehind, но не могу заставить синтаксис работать.
Образец данных:
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 последовательности идентифицированы:
GameAssets_.00000.jpg
кGameAssets_.00024.jpg
00000.jpg
к00018.jpg
'|' эквивалентно '- возможно, вы имели в виду' [._] '(_.) (.)? –
Итак, почему 'archmodels58_057_bark_bump.jpg' не подходит? Он имеет трехзначное число, которому предшествует '_'. Есть ли правило, которое можно использовать для его исключения? –
Да, абсолютно правильно - он тоже должен быть возвращен. Мне пришлось бы разбить его другим тестом, чтобы убедиться, что файл фактически является частью последовательности. – DaveW