Ruby捕获两个冒号之间的单词

时间:2014-02-07 16:21:26

标签: ruby regex

我想捕捉两个冒号之间的任何单词。我试过这个(try on Rubular):

(\:.*\:)
  

您好:姓名:

     

你今天在做什么,:标题:?

     

$:name:,有一个可爱的:事件:。

它除了捕获它的最后一行之外还有效:

  

比赛3
  1.:name :,有一个可爱的:事件:

它被第二个(关闭)冒号和第三个(开放)冒号绊倒了。它应该在最后一行单独捕获:name::event:

3 个答案:

答案 0 :(得分:6)

你需要一个非贪婪的正则表达式:

(\:.*?\:)

.*?将匹配最短的字符串,而.*匹配找到的最长字符串。

答案 1 :(得分:3)

对于两个冒号之间的任何字:

(?<=:)\b.*?\b(?=:)

Rubular link

答案 2 :(得分:2)

(\:[^:]*\:)

[^:]表示“除了'之外的任何东西:'。

请注意,此表达式也会与“::”匹配。

以下是您更新的rubular链接:http://rubular.com/r/VtwhIqtbli