Devo risolvere un problema di regex che potrebbe essere specifico, guardando attraverso l'overflow dello Stack Ho fatto delle buone scoperte, ma non sono riuscito a metterle insieme per farlo funzionare.Correggere i nomi delle strade con regex
Fondamentalmente io voglio questo:
lorem ipsum north road
=>lorem ipsum rd (n)
north lorem ipsum rd
=>lorem ipsum rd (n)
lorem ipsum road north
=>lorem ipsum rd (n)
Come parte di un programma completo di auto ho bisogno di convertire il testo parziale alla versione corretta in modo che possa controllare il database
lorem ipsum so
uth rd =>lorem ipsum rd (s)
west lorem ipsum roa
d =>lorem ipsum rd (w)
Non voglio che qualcuno a codificare questo programma per me, ma mi piacerebbe sapere il migliore modo di affrontare il problema.
Ora si potrebbe chiedere a me perché ho fastidio, come la gente non avrebbe scritto con tanta grammatica f'd up, ma questo è perché non sono solo che fare con l'inglese :(
Acclamazioni
Questa è una grande sfida. In precedenza ho creato un RegExp che ha trovato tipi di strade (ad esempio "Street", "Lane", "Avenue", "Ave", ecc.) Ma anche questo era un RegExp di oltre 200 caratteri. Per risolvere questo sarebbe più complesso di quello. Casi di confine come "North Rd", "West Ave", ecc. Lo renderebbero ancora più impegnativo. –
Penso che questo sia il tipo di domanda che non dovrebbe essere risolta con una singola grande regex. Sarebbe più semplice suddividere l'attività in piccoli passi e fare quelli separatamente: ad es. controlla per nord, n ... ecc e aggiungi un "(n)" alla fine; controllare le altre direzioni; controlla le abbreviazioni di "strada" ... ecc. Se fai ognuno in un passo diverso, sarà probabilmente più facile da seguire e più facile da scrivere. –
Ooh, un altro pensiero: se lo fai passo dopo passo, avrai la possibilità di annullare la tua modifica e provare di nuovo la ricerca: è possibile che qualche strada abbia qualcosa nel nome reale che hai sostituito. –