我有街道地址,我想用空白字符串替换街道方向。
这是街道 E, W, S, N, NE, NW, SE, SW
我想用空白字符串替换它
我已经尝试用这个正则表达式 /((e|w)|(n|s)(e|w)?)/i
来替换方向,但这替换了所有存在的实例字符在正则表达式中。
我想像下面这样转换街道地址 -
"123 Main Street S" => "123 Main Street"
"E 123 Main Street" => "123 Main Street"
"SE 123 Main Street" => "123 Main Street"
"123 Main Street, SW, US" => "123 Main Street, US"
"123 Main Street, s, USA" => "123 Main Street, USA"
最佳答案
这是我能想到的最好的:
/[\s,]*\b(?:[EW]|[NS][EW]?)\b/i
正则表达式匹配:
[\s,]*
- 零个或多个空格和逗号\b
- 字边界(前导)(?:[EW]|[NS][EW]?)
- 匹配的非捕获分组结构:[EW]
-E
或W
[NS][EW]?
-N
或S
可选(因此这些在第一个选项)后跟E
或W
。
\b
- 尾随单词边界
注意 使用字符类(那些 [...]
东西)来匹配单个字符是最佳实践,因为它们不会导致回溯(因此是首选使用通常与字符序列一起使用的替代项进行分组。
参见 IDEONE demo
rx = /[\s,]*\b(?:[EW]|[NS][EW]?)\b/i
puts "123 Main Street S".sub(rx, '').strip # => "123 Main Street"
puts "E 123 Main Street".sub(rx, '').strip # => "123 Main Street"
puts "SE 123 Main Street".sub(rx, '').strip # => "123 Main Street"
puts "123 Main Street, SW, US".sub(rx, '').strip # => "123 Main Street, US"
关于ruby-on-rails - 正则表达式从字符串中删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34775017/