J'essaie d'écrire un motif regex qui trouvera des nombres avec deux 00 premiers dans une chaîne et le remplacer par un seul 0. Le problème est que je veux ignorer les nombres entre parenthèses et je ne peux pas comprendre comment faire ceci.Comment trouver des nombres et en exclure entre parenthèses en utilisant regex
Par exemple, avec la chaîne:
Somewhere 001 (2009)
Je veux revenir:
Somewhere 01 (2009)
Je recherche en utilisant [00] pour trouver le premier 00, et remplacer avec 0 mais le problème est que (2009) devient (209) ce que je ne veux pas. Je pensais juste faire un remplacement sur (209) avec (2009) mais les cordes que j'essaye de corriger pourraient déjà avoir une valeur (209).
Toute aide serait appréciée!
Merci! Avec une correction mineure, j'ai eu ce dont j'avais besoin. Je n'ai pas pensé à utiliser l'espace dans le cadre de la recherche. Je suppose qu'il est trop facile de manquer l'évidence. Au cas où quelqu'un en aurait besoin, le motif regex que j'ai utilisé pour trouver le 00 est ([^ 0-9] | ^) 00. –
Ceci n'ignore pas les nombres entre parenthèses. Il échoue pour "(0002)" – noah
Vous pouvez ignorer l'espace en utilisant les jetons de remplacement. Pour ce faire, vous ajoutez un groupe de capture supplémentaire. Voici le C# oneliner: yourString = Regex.Replace (votreString, "([^ 0-9] | ^) 00 + ([0-9] +)", "$ 10 $ 2"); – tyshock