J'ai des adresses dont j'ai besoin pour nettoyer. Une partie du processus est parage suffit indésirables Numéro de maison, par exemple:regex: rogner toutes les chaînes directement précédées de chiffres, sauf si la chaîne appartient à un ensemble prédéfini de chaînes
mainstreet 4a --> mainstreet 4.
Cependant, je ne veux pas:
618 5th Ave SW --> 618 5 Ave SW
autrement dit il y a quelques chaînes (pour l'instant: st, nd, rd, th) que je ne veux pas dépouiller. Quelle serait la meilleure méthode pour cela (regex ou autre)?
une regex wokring sans les exceptions serait:
a = a.replaceAll("(^|)([0-9]+)[a-z]+($|)","$1$2$3"); //replace 1a --> 1
Je pensais à la première recherche et substiting les cas particuliers avec des caractères spéciaux tout en gardant les références dans une carte, puis faites la regex ci-dessus, puis faire le substitut inverse en utilisant la carte de référence, mais je cherche une solution plus simple.
Merci
Voulez-vous profiter du premier je pense, bc. Je peux envelopper par la tête autour de lui .. Tout avantage à utiliser ce dernier? En aparté: comment postez-vous avec des exemples de code formatés? –
accepté btw, merci! –
Je suis d'accord, c'est un peu plus facile de lire le premier :-). La seconde me permet d'exprimer juste la partie que vous voulez faire correspondre, et utilise la lookahead/lookbehind/negative-lookahead de largeur nulle pour affirmer d'autres choses à propos de l'endroit où il apparaît, et à quoi elles sont destinées. – Avi