使用正则表达式修复街道名称

Moa*_*oak 6 php regex

我必须解决可能具体的正则表达式问题,通过堆栈溢出我已经取得了一些很好的发现,但是无法将它们拼凑在一起以使其工作.

基本上我想要这个:

lorem ipsum north road => lorem ipsum rd (n)

north lorem ipsum rd => lorem ipsum rd (n)

lorem ipsum road north => lorem ipsum rd (n)

作为自动完成程序的一部分,我需要将部分文本转换为正确的版本,以便它可以检查数据库

lorem ipsum south rd =>lorem ipsum rd (s)

west lorem ipsum road =>lorem ipsum rd (w)

我不希望有人为我编写这个程序,但我想知道解决问题的最佳方法.

现在你可能会问我为什么要打扰,因为人们不会用这样的语法来写,但那是因为我不只是处理英语:(

干杯

Wil*_*Niu 0

对于您问题的第一部分,以下伪正则表达式看起来像您想要的吗?

(<direction>?) <road name> (<direction>?) <road type> (<direction>?) 
Run Code Online (Sandbox Code Playgroud)

然后,您检查三个可选正则表达式中的每一个<direction>,包括您想要为其提供的任何条件。您需要自己提出<direction><road name><road type>正则表达式。这些正则表达式可能应该是特定的,例如(路)|(rd)|(街道)|(st)。

对于问题的第二部分(即自动完成),您可能需要对上面提到的部分或全部正则表达式类别(即方向、道路名称和道路类型)建立索引,具体取决于您想要自动完成的程度。