Delimitador de texto AppleScript para el texto más reciente

0

Tengo mucho texto en el archivo My_Note_Backup.txt

Cada vez que ejecuto otro script, se agrega a este texto algo así como

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

y esto se repite alrededor de 60 veces al día.

¿Cómo puedo tener un AppleScript que copie solo la última nota entre {y}

Tengo el delimitador de texto aquí, pero ¿cómo puedo obtener solo el texto más reciente?

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

el archivo de texto es

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

1 respuesta

1

Hay un número de opciones para permitirle realizar una búsqueda de expresiones regulares en Applescript, que es probablemente la forma más fácil de hacer lo que está buscando. El código a continuación está escrito usando Satimage , pero también puede usar cualquiera de las otras opciones con la misma cadena de expresiones regulares.

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

Dado el texto que proporcionaste, esto devolvería:

demo demo demo
demo demo

Para completar, solo desglosaré la expresión regular:

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

Editar: Me acabo de dar cuenta de que otra persona ha editado tu texto de ejemplo desde la primera vez que publicaste. Si realmente quiso decir que está todo en una línea separada por espacios, debe reemplazar el \n s con espacios.

    
respondido por el Timothy Mueller-Harder 06.01.2017 - 18:15

Lea otras preguntas en las etiquetas