2010-08-16 36 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