Bonjour communauté géniale,
Je suis un Dope complet quand il s'agit de regex. J'ai retardé mon apprentissage .. et maintenant ma paresse m'a rattrapé.
Ce que j'essaye de faire:
Vérifiez si une chaîne correspond à ce format:
10_06_13
c'est à dire. Date d'aujourd'hui, ou une date similaire avec "2digits_2digits_2digits"
Ce que j'ai fait:
regex='([0-9][0-9][_][0-9][0-9][_][0-9][0-9])'
if [[ "$incoming_string" =~ $regex ]]
then
# Do awesome stuff here
fi
Cela fonctionne dans une certaine mesure. Mais lorsque la chaîne entrante est égale à 011_100_131
... il passe toujours le test de regex.
Je serais reconnaissant si quelqu'un pouvait m'aider à me diriger dans la bonne direction.
À votre santé
=~
réussit si la chaîne à gauche contient une correspondance pour l'expression régulière à droite. Si vous voulez savoir si la chaîne correspond à l'expression régulière, vous devez "ancrer" l'expression régulière des deux côtés, comme ceci:
regex='^[0-9][0-9][_][0-9][0-9][_][0-9][0-9]$'
if [[ $incoming_string =~ $regex ]]
then
# Do awesome stuff here
fi
Le ^
ne réussit qu'au début de la chaîne et le $
ne réussit qu'à la fin.
Remarques:
()
du regex et ""
du [[ ... ]]
.=~
réussit si la chaîne correspond.