gpt4 book ai didi

ruby-on-rails - 正则表达式从字符串中删除字符

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:46 24 4
gpt4 key购买 nike

我有街道地址,我想用空白字符串替换街道方向。

这是街道 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] - EW
    • [NS][EW]? - NS 可选(因此这些在第一个选项)后跟 EW
  • \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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com