Как я могу определить 6 последовательных чисел в строке? - PullRequest
0 голосов
/ 20 мая 2019

Applescript noob, я пытаюсь определить формат даты в именах файлов и вернуть символы, непосредственно предшествующие дате. Формат даты в файлах - всего 6 последовательных чисел. Данные до этого являются указанием длины файла, а также являются числами. Эти файлы никогда не будут иметь 6 или более последовательных чисел, кроме даты, поэтому мне не нужно беспокоиться о ложных срабатываниях. Что мне нужно сделать, так это найти 6 последовательных чисел, чтобы я мог использовать их, чтобы найти данные до даты и сгруппировать все эти файлы вместе.

например: Barry_Waterson_Speech_1955_27.02_012219_video_file_from_grdx1.mov Тестовая запись Исландии 19 040407 низкого качества screener.mov

изначально казалось, что числа, предшествующие дате, имеют установленные значения, которые я мог бы найти с помощью кода если fileName содержит «29», то но теперь я нахожусь в тупике, как подойти к этому. Моя общая идея заключалась в следующем:

1 Ответ

0 голосов
/ 21 мая 2019

Похоже, что-то съел последнюю часть вашего вопроса.Во всяком случае, AppleScript не является лучшим языком для обработки текста, но независимо от того, какой язык вы используете в стандартной технике, это сопоставление с образцом на основе регулярных выражений.

Например, для сопоставления шести цифр вы должны использовать шаблон \d{6}.Шаблон \d соответствует любой цифре, {6} соответствует предыдущему шаблону ровно шесть раз.

Если вы хотите извлечь текст из начала строки до шести цифр, вы должны использоватьчто-то вроде (?-s)^(.+?)\d{6}.^ соответствует началу каждой строки..+? соответствует одному или нескольким символам (.+) только до следующего совпадения с шаблоном (?);группировка его в скобках извлекает сопоставленный текст.По умолчанию шаблон . соответствует любому символу, включая разрыв строки, поэтому добавьте (?-s) в начало шаблона, чтобы отключить сопоставление с разрывом строки (-s).

Бит загадочный, ноочень мощный, и вы освоитесь с небольшой практикой.Тонны онлайн-документов и примеров тоже;просто найдите «регулярное выражение PCRE».(Совет: создавайте его по одному шаблону за раз, тестируя на каждом этапе.)

AppleScript не имеет встроенной поддержки регулярных выражений, но он может использовать класс Cocoa NSRegularExpression через AppleScript-ObjC мост.Синтаксис не очень дружественный, поэтому вы можете использовать библиотеку , которая обернет его для вас :

use script "Text"

set theText to "Barry_Waterson_Speech_1955_27.02_012219_video_file_from_grdx1.mov
Test Recording Iceland 19 040407 low quality screener.mov"

search text theText for "^(.+?)\\d{6}" using pattern matching

возвращает:

{{class:matched text, startIndex:1, endIndex:39, foundText:"Barry_Waterson_Speech_1955_27.02_012219", foundGroups:{{class:matched group, startIndex:1, endIndex:33, foundText:"Barry_Waterson_Speech_1955_27.02_"}}}, 
 {class:matched text, startIndex:67, endIndex:98, foundText:"Test Recording Iceland 19 040407", foundGroups:{{class:matched group, startIndex:67, endIndex:92, foundText:"Test Recording Iceland 19 "}}}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...