如何匹配正则表达式并在匹配结果中间进行替换
错误地址示例:
我的街道地址8-24
我的街道地址8 24(我需要在中间添加短划线,结果应该是8-24(
我的街道地址8-24(不应删除-从"我的街道"(
我的当前代码
address_as_array.each do |row|
aadress_white_space_removed << row.gsub(/s+/, ' ').gsub(/s-/, '-').strip.mb_chars.downcase.to_s
end
您可以使用以下正则表达式:
/(d)s*[-s]s*(d)/
并替换为CCD_ 1。
查看regex演示
详细信息
(d)
-组1(稍后在字符串替换模式的1
替换反向引用的帮助下引用(:任意数字s*
-0+空白[-s]
-一个连字符或空白s*
-0+空白(d)
-第2组(稍后在2
替换后引用的帮助下引用(:任意数字
在您的代码中,您可以将其用作
aadress_white_space_removed << row.gsub(/s+/, ' ').gsub(/(d)s*[-s]s*(d)/, '1-2').strip.mb_chars.downcase.to_s