2013-01-14 45 views
0

我有一個很大的文本,我想刪除某些字符串前的所有內容。使用Regexp獲取找到的字符串的位置?

問題是,文本中出現了幾個字符串,我想通過稍後分析找到的文本來決定哪一個是正確的。 我不能包括正則表達式的分析,因爲它的複雜性:

text = <<HERE 
big big text 
goes here 
HERE 

pos = -1 

a = text.scan(/some regexp/im) 
a.each do |m| 
    s = m[0] 

    # analysis of found string 
    ... 


    if (s is good) # is the right candidate 
    pos = ??? # here I'd like to have a position of the found string in the text. 

    end 

end 

result_text = text[pos..-1] 

回答

4

$~.offset(n)會給比賽的第n部分的位置。

+0

謝謝! 我試過了,我必須將這一行作爲循環a.each中的第一條指令。 –

+0

如果您正在進一步使用正則表達式,擔心可能會替換當前的'$〜',那麼您可以將它保存爲一個變量:'m = $〜'並使用它。你不必一開始就把它放在一邊。 – sawa

0

我想你應該計算你的大字符串中有多少次出現,然後用index來切斷所有與最終模式不匹配的事件。

相關問題