Ruby on rails 只获取首字母的正则表达式

Ruby on rails 只获取首字母的正则表达式,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,有没有一种方法可以在不使用反向引用的情况下为首字母创建正则表达式?例如,假设我想要 纽约 以及要输出的正则表达式 纽约还是纽约 到目前为止,我有以下几点: .\.[a-zA-Z]+ 这将输出第一个单词的最后一个首字母,而不是第一个首字母:w.y 更新** 我还被分配了RegExp to变量,并使用=~来测试一些东西。使用这个regex,您应该只输出组\1和\2 ([a-zA-Z])[^.]*\.([a-zA-Z]).*?\b 如果要进行替换,应使用\1。\2可以使用大写字母指示正则表达式匹配

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

纽约

以及要输出的正则表达式

纽约还是纽约

到目前为止,我有以下几点:

.\.[a-zA-Z]+
这将输出第一个单词的最后一个首字母,而不是第一个首字母:w.y

更新**


我还被分配了RegExp to变量,并使用=~来测试一些东西。

使用这个regex,您应该只输出组\1和\2

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

如果要进行替换,应使用\1。\2可以使用大写字母指示正则表达式匹配,如下所示:

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

您可以使用gsub函数删除所有小写字母

irb(main):004:0> str = "New.York"
=> "New.York"
irb(main):006:0> str.gsub(/[a-z]+/, "")
=> "N.Y"

考虑到您对纽约的投入,ruby方法可以是:

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

哪个将返回“N.Y”

有什么原因不能进行替换吗?只替换所有小写字母,而不是匹配的字母?我将RegExp分配给一个变量,也是一个regex?看起来拆分和抓取第一个字母可能更容易。@user3465296好的,但是,您希望的结果是什么?为什么你不能使用反向引用?简言之,这有什么意义?是否只想验证格式?你只是想得到N.Y.的字符串吗。?你真的需要什么?+1根据OP目前的问题,我认为这是正确的答案。