web-dev-qa-db-fra.com

vérifier si une chaîne commence par un nombre en utilisant une expression régulière

J'écris une configuration de battement de fichier lorsque je fais correspondre si une ligne commence par un nombre comme 03:32:33 (un horodatage). Je le fais actuellement par-

\d

Mais ce n'est pas reconnu, y a-t-il autre chose que je devrais faire. Je ne suis pas particulièrement bon/j'ai de l'expérience avec l'expression régulière. Votre aide sera appréciée.

10
Y0gesh Gupta

Le vrai problème est que filebeat ne prend pas en charge \d .

Remplacer \d par [0-9] et votre expression régulière fonctionnera.

Je vous suggère de jeter un oeil à la filebeat Patterns pris en charge .

Assurez-vous également que vous avez utilisé ^, il représente le début de la chaîne.

11
Regex: (^\d)

1st Capturing group (^\d)
    ^ Match at the start of the string
    \d match a digit [0-9] 
3
user5684647

Vous pouvez utiliser cette expression régulière:

^([0-9]{2}:?){3}


DÉMO


Assert position at the beginning of the string «^»
Match the regex below and capture its match into backreference number 1 «([0-9]{2}:?){3}»
   Exactly 3 times «{3}»
      You repeated the capturing group itself.  The group will capture only the last iteration.  Put a capturing group around the repeated group to capture all iterations. «{3}»
      Or, if you don’t want to capture anything, replace the capturing group with a non-capturing group to make your regex more efficient.
   Match a single character in the range between “0” and “9” «[0-9]{2}»
      Exactly 2 times «{2}»
   Match the character “:” literally «:?»
      Between zero and one times, as many times as possible, giving back as needed (greedy) «?»
1
Pedro Lobito

Vous pouvez utiliser:

^\d{2}:\d{2}:\d{2}

Le caractère ^ correspond au début d'une ligne.

0
compie