2011-09-07 26 views

回答

2

假设在任何你想要的文字最后散后,在所有符合现实情况下,你可以使用

/#[^#]*$/ 

但也不能保证最后的散列实际上开始评论。如果某行有一个字符串字面内部散列或本身被用作一个%w一个分隔符,例如

%w# abc def # 

或某事像这样使用

dog = "spike" 
%w{#dog rat} 

,那么你将有一个艰难的试图想出一个正则表达式。我会用一个红宝石解析器。

+0

这听起来像我应该使用ruby synax解析器来做这件事情。我正在写一个红宝石混淆器。 – qichunren

+0

确实。我认为语法分析器是删除评论的唯一可靠方法,因为哈希符号可以出现在许多不同的上下文中,包括'#{}'形式和字符串文字和'%w {}'形式,我不确定一般而言,正则表达式足够强大(尽管可能会付出一些努力)。但是,您正在编写混淆器的事实意味着您绝对需要解析器的全部功能,因此您可以执行各种各样的转换。这些转换**应该在抽象语法树而不是(线性)Ruby文本上完成。 –

-1

/# comments/将做工精细

相关问题