我必须解决一个正则表达式问题,可能是特定的,通过堆栈溢出寻找我已经取得了一些很好的发现,但一直没有能够将它们拼凑在一起,使其工作。修复与正则表达式的街道名称
基本上我想这样的:
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 so
UTH RD =>lorem ipsum rd (s)
west lorem ipsum roa
d =>lorem ipsum rd (w)
我不希望有人来这个节目对我的代码,但我想知道最好的解决问题的方法。
现在你可能会问我,为什么我烦心,因为人们不会用这样的f'd了语法写的,但那是因为我不是只处理英文:(
干杯
这是一个巨大的挑战。我之前创建了一个可以找到街道类型(例如“街道”,“街道”,“大道”,“Ave”等)的RegExp,但即使这是一个超过200个字符的RegExp。解决这个问题比这更复杂。像“北路”,“西大街”等边缘案例会使其更具挑战性。 – 2010-12-14 05:05:25
我认为这是一个不应该用一个大的正则表达式解决的问题。将任务分成小步骤并单独完成这些操作会比较简单:例如,检查北,ñ等等,并添加一个“(n)”到最后;检查其他方向;检查“道路”的缩写...等。如果你以不同的步骤完成每一步,它可能会更容易遵循,也更容易编写。 – 2010-12-17 18:57:42
噢,另一个想法是:如果你一步一步做,你可以选择撤销你的修改并再次尝试查找:有可能某个街道有你替换的实际名称。 – 2010-12-17 18:59:59