我对一个简单的标记化器正则表达式有一个小问题:
def test_tokenizer_regex_limit
string = '<p>a</p>' * 400
tokens = string.scan(/(<\s*tag:.*?\/?>)|((?:[^<]|\<(?!\s*tag:.*?\/?>))+)/)
end
基本上它贯穿整个文本并获得[matched_tag,other_text]对。这是一个例子:http://rubular.com/r/f88JBjfzFh
适用于较小的套装。如果你在红宝石1.8.7下跑,它会爆炸。 1.9.2工作正常。
如何简化/改进这一点?我的正则表达很弱
答案 0 :(得分:0)
这有点简化但不多:
(<[^<]*:[^<]*>)|((?:[^<]|<[^:]*>)+)
<击>(小于* GT; |。?[^&LT;&GT;] +)击>