Delitto di testo AppleScript per il testo più recente

0

Ho un sacco di testo sul file My_Note_Backup.txt

Ogni volta che eseguo un altro script, questo ha aggiunto qualcosa di simile a

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

e questo si ripete circa 60 volte al giorno.

Come posso avere un AppleScript che copia solo l'ultima nota tra {e}

Ho qui il delimitatore di testo, ma come posso ottenere solo il testo più recente?

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

il file di testo è

set dataBackupFile to (path to desktop folder as text) & "My_Note_Backup.txt"
    
posta Kevin 06.01.2017 - 15:25
fonte

1 risposta

1

Ci sono numero di opzioni per consentire di eseguire una ricerca regolare in Applescript, che è probabilmente il modo più semplice per fare ciò che stai cercando. Il codice seguente è stato scritto usando Satimage , ma puoi anche usare una qualsiasi delle altre opzioni con il stessa stringa regex.

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

Dato il testo che hai fornito, questo restituirebbe:

demo demo demo
demo demo

Per completezza, spezzerò la regex:

(?<={\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

Modifica: ho appena notato che il tuo testo di esempio è stato modificato da qualcun altro da quando hai pubblicato per la prima volta. Se in realtà vuoi dire che è tutto su una riga separata da spazi, devi sostituire \n s con spazi.

    
risposta data 06.01.2017 - 18:15
fonte

Leggi altre domande sui tag