by sofista » 14 Jul 2022, 09:14
Hola: Sin lugar a dudas lo haría con
RegEx. El inconveniente que veo es que la descripción del problema no es muy precisa, mientras que
RegEx requiere criterios claros para hallar el texto deseado. Al fin y al cabo, una expresión regular describe patrones y esto es justamente lo que no está definido.
No obstante lo dicho, este código encuentra los tres grupos de números indicados, aunque podría fallar en otros casos:
Code: Select all
Clipboard := "En ocasiones mi Clipboard contiene algo como esto i1�31 o esto p9�c5 o esto otro j5¢90"
while pos := RegExMatch(Clipboard, "\W\K\d+|\d+(?=\s)", m, pos ? pos + StrLen(m) : 1)
MsgBox, % m
La expresión regular se divide en dos partes: la primera,
\W\K\d+, dice algo así como "selecciona uno o más dígitos precedido/s por un símbolo que no sea dígito o letra" —captura "31" y "90"—, mientras que la segunda,
\d+(?=\s), selecciona uno o más dígitos seguido/s de un espacio.
Para finalizar, copia del cuadro de mensajes el número que necesites.
Saludos.
Hola: Sin lugar a dudas lo haría con [c]RegEx[/c]. El inconveniente que veo es que la descripción del problema no es muy precisa, mientras que [c]RegEx[/c] requiere criterios claros para hallar el texto deseado. Al fin y al cabo, una expresión regular describe patrones y esto es justamente lo que no está definido.
No obstante lo dicho, este código encuentra los tres grupos de números indicados, aunque podría fallar en otros casos:
[code]
Clipboard := "En ocasiones mi Clipboard contiene algo como esto i1�31 o esto p9�c5 o esto otro j5¢90"
while pos := RegExMatch(Clipboard, "\W\K\d+|\d+(?=\s)", m, pos ? pos + StrLen(m) : 1)
MsgBox, % m
[/code]
La expresión regular se divide en dos partes: la primera, [c]\W\K\d+[/c], dice algo así como "selecciona uno o más dígitos precedido/s por un símbolo que no sea dígito o letra" —captura "31" y "90"—, mientras que la segunda, [c]\d+(?=\s)[/c], selecciona uno o más dígitos seguido/s de un espacio.
Para finalizar, copia del cuadro de mensajes el número que necesites.
Saludos.