Délimiteur de texte AppleScript pour le texte le plus récent

0

J'ai beaucoup de texte dans le fichier My_Note_Backup.txt

Chaque fois que je lance un autre script, il ajoute à ce texte quelque chose comme

demo
demo
{
demo demo demo
demo
}
demo ...

et cela se répète environ 60 fois par jour.

Comment puis-je avoir un AppleScript qui ne copie que la dernière note entre {et}

J'ai le délimiteur de texte ici, mais comment puis-je obtenir le texte le plus récent uniquement?

set theName to ""
set theName to the clipboard

set theText to Unicode text
set theSource to theName
property leftEdge1 : "{"
property rightEdge2 : "}"
try
    set saveTID to text item delimiters
    set text item delimiters to leftEdge1
    set classValue to text item 2 of theSource
    set text item delimiters to rightEdge2
    set theName to text item 1 of classValue
    set text item delimiters to saveTID
    theName
end try
set the clipboard to theName

le fichier texte est

set dataBackupFile to (path to desktop folder as text) & "My_Note_Backup.txt"
Kevin
la source

Réponses:

1

Il existe un certain nombre d'options pour vous permettre de lancer une recherche regex dans Applescript, ce qui est probablement le moyen le plus simple de faire ce que vous cherchez. Le code ci-dessous est écrit en utilisant Satimage , mais vous pouvez également utiliser n’importe quelle autre option avec la même chaîne regex.

set regexStr to "(?<={\n)[^{}]*(?=\n}[^}]*\Z)"
find text regexStr in dataBackupFile with regexp and string result

Compte tenu du texte que vous avez fourni, ceci renverrait:

demo demo demo
demo demo

Par souci d'exhaustivité, je vais simplement décomposer l'expression régulière:

(?<={\n)[^{}]*(?=\n}[^}]*\Z)
(?<={\n)                     - makes sure the match is immediately preceded by {\n
        [^{}]*               - matches as many non-brackets as it can (your string)
              (?=\n}[^}]*\Z) - makes sure the match is immediately followed by a
                               close bracket, with no more brackets between it and
                               the end of the file

Éditer: Je viens de remarquer que votre exemple de texte a été édité par quelqu'un d'autre depuis votre première publication. Si vous voulez dire que tout se trouve sur une seule ligne et séparés par des espaces, remplacez le \ns par des espaces.

Timothy Mueller-Harder
la source
Malheureusement, certains de mes collègues ont réussi à gérer leur profil et ne pourront installer aucune extension.
Kevin
@ KevinCork Quoi?
Timothy Mueller-Harder