Javascript.RU

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

Получить подстроку силами RegExp
Добрый день!
Помогите плиз. решить задачу.
Есть строка:
var str = "string <em>substring<em>substring</em>substring</em> xxx substring xxx <em>substring</em> xxx <em>substring</em>";

Необходимо используя регулярное выражение, выбрать из представленной строки подстроки (выделены underline):

str = "string <em>substring<em>substring</em>substring</em> xxx substring xxx <em>substring</em> xxx <em>substring</em>";

То-есть необходимо выделить содержимое самых внешних тегов <em>
Выражение, к которому я додумался:
pattern = /\<em\>(.*?)\<\/em\>/g;

Проблемы не решает, поскольку не выбирает вложенности.
Заранее спасибо!

Последний раз редактировалось kozakmamai, 28.10.2009 в 10:48.
Ответить с цитированием
  #2 (permalink)  
Старый 28.10.2009, 11:24
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Я считаю, что регулярными выражениями никак, но может кто-то считает по другому )))
Ответить с цитированием
  #3 (permalink)  
Старый 28.10.2009, 17:28
Кандидат Javascript-наук
Отправить личное сообщение для vk65535 Посмотреть профиль Найти все сообщения от vk65535
 
Регистрация: 21.11.2008
Сообщений: 114

var ems = (function() {
	var re = /\<(\/?)em\>/g;
	return function(str) {
		var r = [], _, level = 0, last;
		for (re.lastIndex = 0; _ = re.exec(str); )
			if (!_[1]) {
				if (!level++) last = re.lastIndex;
			} else if (level && !--level)
				r.push(str.substr(last, _.index - last));
		if (level) r.push(str.substr(last));
		return r;
	};
})();

alert(ems('string <em>substring<em>substring</em>substring</em> xxx substring xxx <em>substring</em> xxx <em>substring</em>').join('\n'));

Последний раз редактировалось vk65535, 28.10.2009 в 17:34.
Ответить с цитированием
  #4 (permalink)  
Старый 28.10.2009, 17:32
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

vk65535,
это же можно было сделать проще с помощью str.replace.

Последний раз редактировалось Kolyaj, 28.10.2009 в 17:36.
Ответить с цитированием
  #5 (permalink)  
Старый 29.10.2009, 11:31
Новичок на форуме
Отправить личное сообщение для kozakmamai Посмотреть профиль Найти все сообщения от kozakmamai
 
Регистрация: 28.10.2009
Сообщений: 3

vk65535 лихо! Спасибо, буду разбираться
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить позицию начала выделения? @LEXXX_NF Events/DOM/Window 3 28.08.2009 10:28
Как получить список всех установленных плагинов VitAngel Internet Explorer 0 15.07.2009 09:13
Получить Expire Cookie stiV Общие вопросы Javascript 5 04.04.2009 17:58
RegExp & Mozilla (быстродействие) tau Общие вопросы Javascript 9 24.11.2008 16:35
RegExp и unicode Yury900 Общие вопросы Javascript 7 13.05.2008 00:19