Conceptos b√°sicos de PowerShell: detectar si una cadena termina con cierto car√°cter

¬ŅSab√≠a que puede detectar si una cadena termina en un car√°cter espec√≠fico o si comienza en uno en PowerShell? Thomas Rayner previamente comparti√≥ en CANITPRO.NET c√≥mo se puede hacer esto f√°cilmente mediante el uso de expresiones regulares o m√°s simplemente conocido como Regex.



Original en blog .

Considere los siguientes ejemplos:

'something\' -match '\\$' #returns true 'something' -match '\\$' #returns false '\something' -match '^\\' #returns true 'something' -match '^\\' #returns false 

En los primeros dos ejemplos, la secuencia de comandos comprueba los extremos de la cadena para ver si termina en una barra diagonal inversa. En los √ļltimos dos ejemplos, el script verifica la cadena para ver si comienza con uno.

El patr√≥n de expresiones regulares que se compara para los dos primeros es \\ $. ¬ŅQu√© significa eso? Bueno, la primera parte \\ significa "una barra invertida" (porque \ es el car√°cter de escape, b√°sicamente estamos escapando del car√°cter de escape. La √ļltima parte $ es la se√Īal para el final de la l√≠nea. Efectivamente lo que tenemos es "cualquier cosa en absoluto, donde lo √ļltimo en la l√≠nea es una barra invertida ‚ÄĚ, que es exactamente lo que estamos buscando.

En los segundos dos ejemplos, acabo de mover el \\ al comienzo de la l√≠nea y comenc√© con ^ en lugar de terminar con $ porque ^ es la se√Īal para el inicio de la l√≠nea.

Ahora puedes hacer cosas como esta:

 $dir = 'c:\temp' if ($dir -notmatch '\\$') { $dir += '\' } $dir #returns 'c:\temp\' 

Aquí, el script verifica si la cadena 'lleva' termina en una barra diagonal inversa, y si no lo hace, voy a agregar una.

Source: https://habr.com/ru/post/439672/


All Articles