正则表达式从字符串

时间:2016-01-13 19:06:43

标签: ruby-on-rails ruby regex

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

这是街道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"

3 个答案:

答案 0 :(得分:3)

MIDI.stopAllNotes()

应该为你做。\b((e|w)|(n|s)(e|w)?)\b \b。请参阅演示。

https://regex101.com/r/iJ7bT6/8

答案 1 :(得分:3)

这是我能想到的最好的:

/[\s,]*\b(?:[EW]|[NS][EW]?)\b/i

正则表达式匹配:

  • [\s,]* - 零个或多个空格和逗号
  • \b - 字边界(领先)
  • (?:[EW]|[NS][EW]?) - 一个匹配的非捕获分组结构:
    • [EW] - EW
    • [NS][EW]? - NS 可选(因此第一种方案中缺少这些内容)后跟E或{{ 1}}。
  • W - 尾随字边界

注意使用字符类(那些\b个东西)来匹配单个字符是最佳做法,因为它们不会导致回溯(因此,对于具有通常的替代方案的组来说,它是首选与字符序列一起使用)。

请参阅IDEONE demo

[...]

答案 2 :(得分:1)

/,?\s?\b((e|w)|(n|s)(e|w)?)\b\s?/i

这也会删除方向和逗号之前的空格。

示例:https://regex101.com/r/iW8dZ7/2