2013-10-09 76 views
1

匹配线的其余部分我需要写一个Ruby的正则表达式,将符合下列条件:红宝石正则表达式,在评论

# @name 'foo' 
# @name 'foo' 
# @name foo 

foo

它应该基本上查找包含注释掉的每一行@name并获取它后面的字符串。

+0

以及如何做你写的代码去了解这一点,又是如何得出它不工作? –

回答

1

您可以使用它。

line.match(/^\#\[email protected]\s+["']?(.*?)["']?$/) 

Rubular

+1

这个工作正常!任何方式使它与'''一起工作,而不仅仅是''' – alt

+0

更新与修正。 – hwnd

+0

这个工作适合你吗? – hwnd

2

简单的版本是:

line.match(/^\s*\#\s*@name\s+(.*)/) 

更复杂的版本将占'

line.match(/^\s*\#\s*@name\s+\'?([^']*?)\'?/) 

此不考虑像'foo\'s'转义字符。

+0

这很接近,但匹配任何行的开始。任何方式使它停在新的线? – alt

+0

进一步:简单的版本工作正常,复杂的版本抓住下面的行,直到'''在下一行 – alt

+0

我已经使用'[^'] *?'而不是'[^']来减少贪婪bu *'。我以为你会一行一行地处理它,在这种情况下,原件应该工作。 – tadman