Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.07.2013, 20:10
Новичок на форуме
Отправить личное сообщение для volodymyrl Посмотреть профиль Найти все сообщения от volodymyrl
 
Регистрация: 26.01.2012
Сообщений: 9

Распарсить строку с помощью регулярного выражения
Есть контент на странице, например такой

<div class="engage-eventCallout">{^youtubevideo|(width)425|(height)264|(rel)True|(color1)#666666|(url)http://www.youtube.com/watch?v=ZqUFLFmuLmg|(autoplay)False|(border)False|(loop)False|(cookies)False|(hd)False|(fs)True|(color2)#EFEFEF^}December 16, 2011 Seattle WA</p></div>


нужно найти в нем блок который начинается на
{^youtubevideo
и заканчивается на ^} А то что в середине передать в массив. Обработать и заменить изначально найденный блок на новый

на выходе должно получиться что-то типа

<div class="engage-eventCallout">
<object width="425" height="264">
<param name="movie" value="http://www.youtube.com/v/3OieT8W-9Rs&amp;fs=1&amp;enablejsapi=1&amp;color1=0x666666&amp;color2=0xEFEFEF">
<param name="allowFullScreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="wmode" value="transparent">
<embed src="http://www.youtube.com/v/3OieT8W-9Rs&amp;fs=1&amp;enablejsapi=1&amp;color1=0x666666&amp;color2=0xEFEFEF" type="application/x-shockwave-flash" wmode="transparent" allowscriptaccess="always" allowfullscreen="true" width="425" height="264">
December 16, 2011 Seattle WA</p></div>


не могу написать регулярку, что бы выбрать данные из этого блока. Помогите пожалуйста с регуляркой! Преобразовать данные в объект думаю смогу сам. спасибо!

Последний раз редактировалось volodymyrl, 08.07.2013 в 20:27.
Ответить с цитированием
  #2 (permalink)  
Старый 08.07.2013, 20:19
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

я теперь аккуратненько вставь пропущенные буквы
Ответить с цитированием
  #3 (permalink)  
Старый 08.07.2013, 20:28
Новичок на форуме
Отправить личное сообщение для volodymyrl Посмотреть профиль Найти все сообщения от volodymyrl
 
Регистрация: 26.01.2012
Сообщений: 9

Сообщение от bes Посмотреть сообщение
я теперь аккуратненько вставь пропущенные буквы
готово
Ответить с цитированием
  #4 (permalink)  
Старый 08.07.2013, 20:32
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

оно?
var str = '<div class="engage-eventCallout">{^youtubevideo|(width)425|(height)264|(rel)True|(color1)#666666|(url)http://www.youtube.com/watch?v=ZqUFLFmuLmg|(autoplay)False|(border)False|(loop)False|(cookies)False|(hd)False|(fs)True|(color2)#EFEFEF^}December 16, 2011 Seattle WA</p></div>';
alert(str.match(/\^youtube.*\^}/)[0])
Ответить с цитированием
  #5 (permalink)  
Старый 08.07.2013, 20:54
Новичок на форуме
Отправить личное сообщение для volodymyrl Посмотреть профиль Найти все сообщения от volodymyrl
 
Регистрация: 26.01.2012
Сообщений: 9

Сообщение от bes Посмотреть сообщение
оно?
var str = '<div class="engage-eventCallout">{^youtubevideo|(width)425|(height)264|(rel)True|(color1)#666666|(url)http://www.youtube.com/watch?v=ZqUFLFmuLmg|(autoplay)False|(border)False|(loop)False|(cookies)False|(hd)False|(fs)True|(color2)#EFEFEF^}December 16, 2011 Seattle WA</p></div>';
alert(str.match(/\^youtube.*\^}/)[0])
спасибо, уже близко. Но нужно как-то разбить на составляющие, типа with=425, height=264....
Ответить с цитированием
  #6 (permalink)  
Старый 08.07.2013, 21:00
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

не понял что и как ты хочешь вычленить, но для запоминания используются круглые скобки
var str = '<div class="engage-eventCallout">{^youtubevideo|(width)425|(height)264|(rel)True|(color1)#666666|(url)http://www.youtube.com/watch?v=ZqUFLFmuLmg|(autoplay)False|(border)False|(loop)False|(cookies)False|(hd)False|(fs)True|(color2)#EFEFEF^}December 16, 2011 Seattle WA</p></div>';
var reg = /(.*\^youtube).*(\^}.*)/;
str = str.match(reg)[0];
alert(str.replace(reg, "$1 MY_BLOCK $2"));
Ответить с цитированием
  #7 (permalink)  
Старый 08.07.2013, 21:10
Новичок на форуме
Отправить личное сообщение для volodymyrl Посмотреть профиль Найти все сообщения от volodymyrl
 
Регистрация: 26.01.2012
Сообщений: 9

Сообщение от bes Посмотреть сообщение
не понял что и как ты хочешь вычленить, но для запоминания используются круглые скобки
var str = '<div class="engage-eventCallout">{^youtubevideo|(width)425|(height)264|(rel)True|(color1)#666666|(url)http://www.youtube.com/watch?v=ZqUFLFmuLmg|(autoplay)False|(border)False|(loop)False|(cookies)False|(hd)False|(fs)True|(color2)#EFEFEF^}December 16, 2011 Seattle WA</p></div>';
var reg = /(.*\^youtube).*(\^}.*)/;
str = str.match(reg)[0];
alert(str.replace(reg, "$1 MY_BLOCK $2"));
мне нужно получить все параметры видео из этой строки {^youtubevideo|(width)425|(height)264 ..... ^}
Ответить с цитированием
  #8 (permalink)  
Старый 08.07.2013, 21:36
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

ну и вычленяй потихоньку, специальные символы экранируй
как-нибудь типа так
var str = '<div class="engage-eventCallout">{^youtubevideo|(width)425|(height)264|(rel)True|(color1)#666666|(url)http://www.youtube.com/watch?v=ZqUFLFmuLmg|(autoplay)False|(border)False|(loop)False|(cookies)False|(hd)False|(fs)True|(color2)#EFEFEF^}December 16, 2011 Seattle WA</p></div>';
var reg = /.*\^youtube.*\(width\)(\d*)\|.*\^}.*/;
alert("width=" + str.replace(reg, "$1"));
Ответить с цитированием
  #9 (permalink)  
Старый 08.07.2013, 22:57
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

var str = '<div class="engage-eventCallout">{^youtubevideo|(width)425|(height)264|(rel)True|(color1)#666666|(url)http://www.youtube.com/watch?v=ZqUFLFmuLmg|(autoplay)False|(border)False|(loop)False|(cookies)False|(hd)False|(fs)True|(color2)#EFEFEF^}December 16, 2011 Seattle WA</p></div>';
str=str.match(/\^youtube.*\^}/)[0];
var els=str.split('|');
for(var i=1;i<els.length;i++)
{var el=els[i];
var l=el.split('(')[1].split(')')[0];
var r=el.split(')')[1];
alert(l+'="'+r+'"');
};
Ответить с цитированием
  #10 (permalink)  
Старый 08.07.2013, 23:27
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

str = '<div class="engage-eventCallout">{^youtubevideo|(width)425|(height)264|(rel)True|(color1)#666666|(url)http://www.youtube.com/watch?v=ZqUFLFmuLmg|(autoplay)False|(border)False|(loop)False|(cookies)False|(hd)False|(fs)True|(color2)#EFEFEF^}December 16, 2011 Seattle WA</p></div>'
if(/\^youtubevideo/gim.test(str)){
  var arr=str.split(/\^youtubevideo\|\(|\^\}/igm)[1].replace(/\)/gim,':"').split("|\(");
  eval('var obj = {' + arr.join('",\n') + '"}');

  for (i in obj){
     alert(i+':'+obj[i])
  }
}

Последний раз редактировалось Deff, 09.07.2013 в 18:02.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь в составлении регулярного выражения voloxa89 jQuery 4 13.12.2012 22:43
Составление регулярного выражения nip Общие вопросы Javascript 12 18.10.2012 16:07
Ограничить длину строки с помощью регулярного выражения pro_xaoc Элементы интерфейса 2 07.08.2011 15:58
Не работает шаблон для регулярного выражения Andrei Серверные языки и технологии 1 03.04.2010 09:48
Выделить целое слово на русском с помощью регулярного выражения! timdenice Общие вопросы Javascript 6 11.02.2010 12:59