Ruby on rails regex从字符串中删除字符
我有街道地址,我想用空白字符串替换街道方向 这是我想用空白字符串替换的街道Ruby on rails regex从字符串中删除字符,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,我有街道地址,我想用空白字符串替换街道方向 这是我想用空白字符串替换的街道E、W、S、N、NE、NW、SE、SW 我尝试用这个regex/((e | w)|(n | s)(e | w))/I来替换方向,但这将替换regex中存在的所有实例字符 我想转换街道地址如下- "123 Main Street S" => "123 Main Street" "E 123 Main Street" => "123 Main Street" "SE 123 Main Street" => "
E、W、S、N、NE、NW、SE、SW
我尝试用这个regex/((e | w)|(n | s)(e | w))/I
来替换方向,但这将替换regex中存在的所有实例字符
我想转换街道地址如下-
"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"
应该为您做。\b
是单词边界
。请参阅演示
应该为您做。\b
是单词边界
。请参阅演示
这也将删除环绕方向和前面逗号的空白空间。
例如:这也将删除环绕方向和前面逗号的空白空间。
示例:以下是我能想到的最好办法:
/[\s,]*\b(?:[EW]|[NS][EW]?)\b/i
正则表达式匹配:
-零个或多个空格和逗号[\s,]*
-单词边界(前导)\b
-匹配以下内容的非捕获分组构造:(?:[EW]|[NS][EW]?)
-要么[EW]
要么E
W
-可选地选择[NS][EW]?
或N
(因此第一个备选方案中缺少这些),然后是S
或E
W
-尾随词边界\b
[…]
东西)匹配单个字符是最佳做法,因为它们不会导致回溯(因此最好使用通常与字符序列一起使用的具有替代项的组)
看
以下是我能想到的最好的:
/[\s,]*\b(?:[EW]|[NS][EW]?)\b/i
正则表达式匹配:
-零个或多个空格和逗号[\s,]*
-单词边界(前导)\b
-匹配以下内容的非捕获分组构造:(?:[EW]|[NS][EW]?)
-要么[EW]
要么E
W
-可选地选择[NS][EW]?
或N
(因此第一个备选方案中缺少这些),然后是S
或E
W
-尾随词边界\b
[…]
东西)匹配单个字符是最佳做法,因为它们不会导致回溯(因此最好使用通常与字符序列一起使用的具有替代项的组)
看
不知道为什么在只查找大写字母时,在带有
i
选项的正则表达式中使用小写字母,而不是直接编写大写字母。正则表达式本身只是一个表达式。它没有任何作用。您还没有明确说明如何使用它。不确定您将如何使用它,但只需将这些字母替换为空白字符串,就可以在方向的两侧留下空格,甚至像您上一个示例中那样留下逗号,我不知道你怎么能只用一个正则表达式,没有人工智能或任何相关数据库来区分方向和非方向字母(如公寓82E
中的E
),sawa我已经更新了我的问题。我有一个要求,我想删除街道地址的方向,并保存它不同。用户的输入可以是任何大小写大写
或小写
,因此使用了i
。不知道为什么在正则表达式中使用小写,而不是在只查找大写字母时直接写大写字母。正则表达式本身只是一个表达式。它没有任何作用。您还没有明确说明如何使用它。不确定您将如何使用它,但只需将这些字母替换为空白字符串,就可以在方向的两侧留下空格,甚至像您上一个示例中那样留下逗号,我不知道你怎么能只用一个正则表达式,没有人工智能或任何相关数据库来区分方向和非方向字母(如公寓82E
中的E
),sawa我已经更新了我的问题。我有一个要求,我想删除街道地址的方向,并保存它不同。用户输入可以是任何情况下的大写
或小写
,因此使用i
。
/[\s,]*\b(?:[EW]|[NS][EW]?)\b/i
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"