2013-05-13 6 views
1

У меня есть сценарий, который открывает запрос на сервер и получает выход javascript.Рекурсивное регулярное выражение в ruby ​​

этот результат выглядит следующим образом:

HTML = новый Array(); знак = новый Array(); html.push ('HTML-теги (что-то я хочу) более HTML'); mark.push (новый объект Obj (-12.1231231, -12.12312312312)); html.push (теги html (что-то я хочу) больше html '); mark.push (новый Obj (-12.1231231, -12.12312312312)); html.push (' html теги (что-то я хочу) больше html '); mark.push (новый Obj (-12.1231231, -12.12312312312)); html.push (теги html (что-то я хочу) больше html'); mark.push (новый Obj (-12.1231231, -12.12312312312)); html.push (теги html (что-то я хочу) больше html '); mark.push (новый Obj (-12.1231231, -12.12312312312)); OtherStuf.idontcare (новый объект (-16.630495852614, -49,264667191591), 13);

я хочу создать регулярное выражение, чтобы взять все в: (something i want) и номера на new Obj(-12.1231231, -12.12312312312), так что в этой части:

html.push ("HTML-теги (что-то я хочу) более HTML «); mark.push (новый Obj (-12,1231231, -12,12312312312))

я хочу, чтобы получить только:

(something i want) 
-12.1231231 
-12.12312312312 

, но это для каждого места я нахожу это.

я создал это регулярное выражение, чтобы принять все внутреннее содержание

/^html = new Array\(\);mark = new Array\(\);(.*)OtherStuf.idontcare\(new Object\([\+\-\.0-9]*, [\+\-\.0-9]*\), [\d]*\);$/ 

, но теперь я вроде застрял. я не могу найти способ получения информации, которая мне нужна.

как я могу это сделать?

сути с моим регулярным выражением и пример JavaScript мне нужно разобрать: https://gist.github.com/NicosKaralis/5571240

+0

вы пытаетесь написать регулярное выражение, которое может анализировать HTML-разметку? если это так, то это невозможно. – akonsu

+0

Кажется, что-то переписать смещенный фрагмент JavaScript. – tadman

+0

Я не хочу разбирать html-разметку, я хочу разобрать этот js, который содержит некоторую разметку html, но только некоторые ее точки –

ответ

0

один регулярное выражение не может работать хочет, чтобы вы хотите.

Я рекомендую сначала разбить на блоки, а затем запустить регулярное выражение на каждом из них:

output.split(/html\.push/).each do |block| 
    # grab "something i want" and the numbers in block 
end