Похоже, что-то съел последнюю часть вашего вопроса.Во всяком случае, 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 "}}}}