0
votes

Comment utiliser une expression régulière pour trouver tous les numéros commençant par "$"

Je traite des chaînes contenant des valeurs dollar séparées non par la virgule. Par exemple:

"lot 2 - 650000 $"

J'ai besoin de trouver le "650000 $" et de le remplacer par "650 000 $".

Le problème est que je Je suis un novice complet en matière d'expressions régulières. J'ai trouvé un message qui a suggéré cela pour trouver des numéros: xxx

Ceci trouve avec succès le "2" et le "650000" dans ma chaîne. Cependant, je veux m'assurer que je n'obtiens que des nombres qui commencent par "$", alors je veux que je veux obtenir le "$ 650000".

peut-il peut-être m'aider à adapter l'expression régulière pour obtenir uniquement des chiffres qui commencent avec "$"?


0 commentaires

4 Réponses :


1
votes

Il suffit d'ajouter le signe du dollar dans votre motif et utilisez Preg_replace_callback puis combine number_format . Quelque chose comme ceci: xxx


0 commentaires

0
votes

Essayez ce qui suit: xxx

Ce site Web a vraiment aidé moi comprendre comment atteindre ce


1 commentaires

Pouvez-vous montrer comment le remplacement est effectué en utilisant ce modèle?



1
votes

La réponse de Kevin est meilleure. Je suis allé le long chemin: XXX


1 commentaires

Merci Adam. C'est effectivement fait tout ce que je voulais. J'ai tendance à prendre le long chemin autour des choses aussi; se révèle souvent être l'option la plus complète.



1
votes

Vous pouvez remplacer les correspondances de l'expression régulière suivante avec une virgule pour confirmer la présence du signe dollar et insérer des virgules dans les emplacements corrects.

(?:         : begin non-capture group
  \$        : match '$'
  |         : or
  \G        : assert position at the end of the previous match
)           : end non-capture group
\d+?        : match 1+ digits
\K          : reset starting point of match and no longer include
              previously-consumed characters in reported match
(?=         : begin positive lookahead
  (?:\d{3}) : match 3 digits in a non-capture group
  +         : execute non-capture group 1+ times
  $         : match end of string
)           : end positive lookahead


2 commentaires

Je pense que vous pouvez faire le \ d +? aussi \ d {1,3} si 3 chiffres est le max :-) REGEX101.com/R/f0ggy5/1 +1


@Thefourthbird, oui, je l'ai eu de cette façon, alors l'a changé sur un caprice.