正则表达式只获得首字母缩写

时间:2014-09-10 14:05:05

标签: ruby-on-rails ruby regex

有没有办法在不使用反向引用的情况下为首字母创建正则表达式?例如,假设我想要

的缩写
  

New.York

输出正则表达式

  

N.Y。 (或n.y)

到目前为止,我有以下内容:

.\.[a-zA-Z]+

这将输出第一个单词的最后一个而不是第一个单词的初始值:w.y

UPDATE **

我还将RegExp分配给变量并使用=〜来测试一些东西。

4 个答案:

答案 0 :(得分:3)

您可以使用gsub函数

删除所有小写字母
irb(main):004:0> str = "New.York"
=> "New.York"
irb(main):006:0> str.gsub(/[a-z]+/, "")
=> "N.Y"

答案 1 :(得分:1)

根据您对“New.York”的输入,这样做的红宝石方法可能是:

str.split('.').collect { |s| s[0] }.join('.')

将返回'N.Y'

答案 2 :(得分:0)

使用此正则表达式,您应该只输出组\ 1和\ 2。

([a-zA-Z])[^.]*\.([a-zA-Z]).*?\b

DEMO

如果您想进行替换,请使用\1.\2

答案 3 :(得分:0)

您可以使用大写字母来指示正则表达式匹配:

[15] pry(main)> str
=> "New.York"
[16] pry(main)> str.scan(/[A-Z]+/).join('.')
=> "N.Y"