如何从正则表达式中提取/打印匹配项,并且只打印正则表达式的匹配项

  • 本文关键字:打印 正则表达式 提取 regex unix vim
  • 更新时间 :
  • 英文 :


我有一大堆变量名,需要在迁移文件、视图、区域设置文件等之间移动。

我不想重新键入所有这些,也不想复制、粘贴和修剪,因为我已经做了太多了。

我一直试图通过正则表达式提取这些内容,但每次我尝试这样做时,都会打印整行,而不仅仅是我想要的以":"开头、以"\s"结尾的变量名,如:name、:email、:home_phone等。

我怎么才能得到这些来提取我想要的东西?

我一直在尝试在vim中使用:

      :%s/:.*s/y

这是输入文件:

      <%= f.input  :name %>
      <%= f.input  :email %>
      <%= f.input  :home_phone %>
      <%= f.input  :cell_phone %>
      <%= f.input  :other_phones %>
      <%= f.input  :last_position_candidate_id %>
      <%= f.input  :last_position_title %>
      <%= f.input  :last_position_company_id %>
      <%= f.input  :last_position_start_date %>
      <%= f.input  :last_position_salary %>
      <%= f.input  :last_position_medical_insurance %>
      <%= f.input  :last_position_christmas_bonus %>
      <%= f.input  :last_position_annual_bonus %>
      <%= f.input  :last_position_vehicle %>
      <%= f.input  :last_position_other_benefits %>
      <%= f.input  :conversational_english %>
      <%= f.input  :written_english %>
      <%= f.input  :vehicle %>

这就是我想要得到的:

              :name 
      :email 
      :home_phone 
      :cell_phone 
      :other_phones 
      :last_position_candidate_id 
      :last_position_title 
      :last_position_company_id 
      :last_position_start_date 
      :last_position_salary 
      :last_position_medical_insurance 
      :last_position_christmas_bonus 
      :last_position_annual_bonus 
      :last_position_vehicle 
      :last_position_other_benefits 
      :conversational_english 
      :written_english 
      :vehicle
%s/.*(:w+)s.*/1/

请参阅http://vimregex.com/#backreferences了解更多信息。

为了避免重新键入,可能就足够了

:set iskeyword+=:

在Vim中打开源文件,并在另一个缓冲区中使用内置的插入模式完成(例如,:last_后面跟着Ctrl+N)。

最新更新