2010-08-16 37 views
-2

我想从我的文件中提取_(“”)之间的所有字符串。在_(“”)之间提取内容ruby

我该如何获取?

+0

能否请您澄清你的问题?你是一对双引号内的想要的字符串,或引号括起括号? – 2010-08-16 23:13:00

+0

如果有的话应该发生什么嵌套'_(“”)'s,像'foo _(“bar _(”baz“)”)'? – sepp2k 2010-08-16 23:39:58

+0

@ sepp2k:一般来说,你应该回答一个正则表达式的问题,而不是只是抱怨嵌套(除非它明显表明嵌套是一个问题)。你可以随时提到一个警告,即如果字符串是嵌套的,它不起作用,但仅仅拒绝直接回答问题是不礼貌的。在这种情况下,对一个字符串中的所有'gettext'使用'_()'是常规的,所以我假定他想要做的是扫描一个文件来查找所有需要本地化的字符串 - 不太可能包含嵌套,因为'_(“baz”)'不是我所知道的任何人类语言中的一个词。 – 2010-08-17 13:31:36

回答

0

假设有嵌套你要找的字符串中没有引号,你想将文件加载到一个字符串

str=File.read("/path/to/file") 

然后扫描使用正则表达式的字符串。下面的正则表达式应该可以做到这一点。它寻找字符​​3210(这里的开括号被转义,因为括号在正则表达式中有特殊含义)。下一个圆括号开始一个捕获组(这样,字符串的文本将被存储在特殊变量$1中),然后它会找到一串连续的字符,直到第一个引号为止,然后结束捕获组(带有未转义的右括号)查找一个")完成表达。

/_\("([^"]*)"\)/ 

一对双内使用

str.scan(/_\("([^"]*)"\)/) do 
    puts $1 
end