RegexpError:regexp匹配器中的堆栈溢出

我有一个简单的tokenizer正则表达式的小问题:

def test_tokenizer_regex_limit string = '

a

' * 400 tokens = string.scan(/()|((?:[^<]|\))+)/) end

基本上它贯穿文本并获得[matched_tag,other_text]对。 这是一个例子: http : //rubular.com/r/f88JBjfzFh

适用于较小的套装。 如果你在ruby1.8.7下跑,它会爆炸。 1.9.2工作正常。

有任何想法如何简化/改进这个? 我的正则表达式很弱

这有点简化但不多:

 (<[^<]*:[^<]*>)|((?:[^<]|<[^:]*>)+) 

(<*。?> | [^ <>] +)