-2
votes

Quelle est la signification de ^ \ d * (\: d +)? $. ou ^ \ d * (\: d +)? $

Comme le titre suggère, quelle est la signification de ^ \ d * (\: d +)? $ et quelle différence de . dans la fin signifie que c'est-à-dire ^ \ d * (\: d +)? $.


4 commentaires

Vous semblez avoir écrit la même expression deux fois et une expression différente (deux fois) dans le titre.


Est le "." À la fin de la deuxième partie du regex de la regex, ou est-ce la fin de la phrase? (Étant donné que vous demandez spécifiquement "." Je suppose que cela fait partie de la regex, mais je veux être certain)


Vous pouvez évaluer votre expression sur << a href = "https://regex101.com" rel = "nofollow noreferrer"> regex101.com >, il vous donne une explication. Vous pouvez également ajouter des cas de test.


@Konradrudolph Il semble que cela coupe un point à la fin du titre. Donc, je le mets à la fin de la première regex.


3 Réponses :


0
votes
. Dot Matches any character except linebreaks
Form detail information put your regex here: https://regexr.com/

0 commentaires

1
votes

le . à la fin de ^ \ d * (: d +)? $. est probablement la fin d'une phrase et ne faisait probablement pas partie de la regex lui-même.

Pourquoi?: $ est un symbole pour la fin d'une ligne, de sorte que si vous utilisez RegEx pour correspondre à des chaînes multilignes (rares mais possibles), le . ne correspond à rien car rien ne vient après la fin de la chaîne.

Que signifie la regex?:

  • ^ début de chaîne
  • \ d * 0 ou plusieurs chiffres
  • (: d +)? Possibilité d'un : suivi d'un ou plusieurs d (prob une faute de frappe et ils signifiaient à nouveau)
  • $ fin de chaîne

    Cela correspond ainsi aux modèles tels que:

    • : 1 où \ d * peut avoir 0 entrées ou plus
    • 12 où : etc. et sont des trucs après : est facultatif
    • 1234567890 Où \ d * peut avoir plusieurs entrées et : et numéros après : sont facultatifs
    • 1: 2 où vous avez au moins 1 de tout
    • 1234567890: 123 où vous avez de nombreux chiffres de chaque côté de :

3 commentaires

En pcre lorsque m est désactivé $ a le même comportement que \ z qui correspond à la position à la fin de la chaîne d'entrée ou avant la fin de la chaîne d'entrée. Dans ce cas, avec s Set, $. correspondra (voir Démo en direct ici ). Mais je suis d'accord que cela ne fait probablement pas partie de la regex.


Sauf si vous utilisez RegEx pour faire correspondre des chaînes multilignes (rares mais possibles) ... Vous pouvez également forcer Python à correspondre à des chaînes multilignes ... Les gens utilisent parfois cela lorsque vous essayez de communiquer avec za̡͊͠͝lgό Isͮ҉̯͈͕̹̘ to͇̹̺ɲ̴ȳ̳ th̘ë͖̉ ͠p̯͍̭o̚ n̐y̡


Match Multi-Lines String a une interprétation différente, c'est-à-dire 1) pour correspondre à des chaînes multilignes afin que $ correspond à la fin de chaque ligne ou 2) correspond à des chaînes multi-lignes Donc, que . correspond à des lamelles. Le premier pourrait être atteint en définissant le drapeau M (Multiline) (sauf en rubis) et ce dernier avec s (dotall).



0
votes

Pour de tels cas que votre question, une solution merveilleuse est de trouver Une page de testeur de regex, par exemple https://regex101.com/

ALORS:

  • Copiez votre regex dans le champ respectif ( Expression Regex ).
  • oscillez la souris sur chaque partie de la regex.
  • Vous verrez une description concernant la pièce sous le curseur.

    Prenez aussi un coup d'œil sur le coin supérieur droit, avec explication en direction. Il contient une explication très détaillée de la regex.

    Et aussi loin que votre regex est concerné: (\: d +) semble un peu étrange, car:

    • le côlon (: ) ne nécessite aucun \ devant eux.
    • Peut-être que la rédaction appropriée doit être (: \ d +) c'est-à-dire suivi par une séquence de chiffres?

      La regex modifiée comme ci-dessus correspondrait à E.G. String source comme 789: 456 .

      Pour un exemple, voir https://regex101.com/r/kkz9oo/1


0 commentaires