Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.08.2010, 13:59
Аспирант
Отправить личное сообщение для artwalek Посмотреть профиль Найти все сообщения от artwalek
 
Регистрация: 11.12.2008
Сообщений: 44

Вложенность в ругулярных выражениях
Всем привет.
Помогите пожалуйста сделать вложенную замену в регулярном выражении в исходных данных вида "Hello "world", yahoo!", в «Hello «world», yahoo!»

Сделал замену без вложенностей так:
function replace(node) {
	var decs = node[0].text;
	var quote = /"([^"]*)"/g;
	decs = decs.replace(quote, '«$1»');
	return decs;
}


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

А как скрипт должен догадаться, так нужно заменять «Hello «world», yahoo!» или так «Hello »world«, yahoo!»? Кавычки-то не отличаются друг от друга.
Ответить с цитированием
  #3 (permalink)  
Старый 02.08.2010, 14:51
Аспирант
Отправить личное сообщение для artwalek Посмотреть профиль Найти все сообщения от artwalek
 
Регистрация: 11.12.2008
Сообщений: 44

Сообщение от Kolyaj Посмотреть сообщение
А как скрипт должен догадаться, так нужно заменять «Hello «world», yahoo!» или так «Hello »world«, yahoo!»? Кавычки-то не отличаются друг от друга.
Спасибо за замечание, упустил из виду, вложенные кавычки должны быть вида: «Hello „world“, yahoo!»
Ответить с цитированием
  #4 (permalink)  
Старый 02.08.2010, 14:53
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Нет, вы не поняли. Вот встретили вы в строке кавычку ". На что её нужно заменить: «, », „ или “?
Ответить с цитированием
  #5 (permalink)  
Старый 02.08.2010, 15:02
Аспирант
Отправить личное сообщение для artwalek Посмотреть профиль Найти все сообщения от artwalek
 
Регистрация: 11.12.2008
Сообщений: 44

Сообщение от Kolyaj Посмотреть сообщение
Нет, вы не поняли. Вот встретили вы в строке кавычку ". На что её нужно заменить: «, », „ или “?
Хорошо, поясню так.
Допустим, в предложении у нас нет вложенных кавычек:
В "Интерросе" это подтвердили, хотя в марте—апреле компания говорила о такой возможности.

Но могут быть предложения, где имеют быть место вложенные кавычки, пример:
"Любой buy-back, когда ты ("Интеррос".— "Ъ") управляешь менеджментом и регистратором, это всегда непропорциональная покупка акций".

Мне необходимо заменить кавычки вида "" на типографские — «» в случае если нет вложенных кавычек, т. е. так:
В «Интерросе» это подтвердили, хотя в марте—апреле компания говорила о такой возможности.

и так, если есть вложенные кавычки:
«Любой buy-back, когда ты („Интеррос“.— „Ъ“) управляешь менеджментом и регистратором, это всегда непропорциональная покупка акций».

Стало понятней?
Ответить с цитированием
  #6 (permalink)  
Старый 02.08.2010, 15:20
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от artwalek
Но могут быть предложения, где имеют быть место вложенные кавычки, пример:
"Любой buy-back, когда ты ("Интеррос".— "Ъ") управляешь менеджментом и регистратором, это всегда непропорциональная покупка акций".
Вы упорно не хотите формализовать задачу. Это вам, человеку, понятно, что тут вложенные кавычки. А как глупая машина должна понять, что здесь именно вложенные кавычки, а не несколько блоков текста, заключённых в кавычки, идущие друг за другом. В этом примере, например, в кавычках находится три блока текста

Любой buy-back, когда ты (
.—
) управляешь менеджментом и регистратором, это всегда непропорциональная покупка акций

Как эту ситуацию отличить от вложенных кавычек?
Ответить с цитированием
  #7 (permalink)  
Старый 02.08.2010, 15:35
Аспирант
Отправить личное сообщение для artwalek Посмотреть профиль Найти все сообщения от artwalek
 
Регистрация: 11.12.2008
Сообщений: 44

Сообщение от Kolyaj Посмотреть сообщение
Вы упорно не хотите формализовать задачу. Это вам, человеку, понятно, что тут вложенные кавычки. А как глупая машина должна понять, что здесь именно вложенные кавычки, а не несколько блоков текста, заключённых в кавычки, идущие друг за другом. В этом примере, например, в кавычках находится три блока текста

Любой buy-back, когда ты (
.—
) управляешь менеджментом и регистратором, это всегда непропорциональная покупка акций

Как эту ситуацию отличить от вложенных кавычек?
Думаю формализовать так: делать либо вложенную замену, либо двойной проход строки. Второй вариант мне кажется предпочтительней: сперва менять все на левую кавычку, а а на втором менять каждую вторую.
Ответить с цитированием
  #8 (permalink)  
Старый 02.08.2010, 15:42
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от artwalek
Второй вариант мне кажется предпочтительней: сперва менять все на левую кавычку, а а на втором менять каждую вторую.
Так никогда не будет вложенных кавычек. Вы всё-таки не понимаете всего масштаба проблемы. Тут, например, какие кавычки, вложенные или нет?

"aaa"bbb"ccc"

Может вам лучше типограф попробовать заюзать?
Ответить с цитированием
  #9 (permalink)  
Старый 02.08.2010, 15:47
Аспирант
Отправить личное сообщение для artwalek Посмотреть профиль Найти все сообщения от artwalek
 
Регистрация: 11.12.2008
Сообщений: 44

Сообщение от Kolyaj Посмотреть сообщение
Так никогда не будет вложенных кавычек. Вы всё-таки не понимаете всего масштаба проблемы. Тут, например, какие кавычки, вложенные или нет?

"aaa"bbb"ccc"

Может вам лучше типограф попробовать заюзать?
Возможно и не осознаю, для меня это пока в новинку.

"aaa"bbb"ccc" — я думаю вложенные.
Типограф Лебедевский не подходит, нужно именно на JS.
Ответить с цитированием
  #10 (permalink)  
Старый 02.08.2010, 15:51
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от artwalek
"aaa"bbb"ccc" — я думаю вложенные.
Почему?

Сообщение от artwalek
Типограф Лебедевский не подходит, нужно именно на JS.
Можно бэкенд на сервере сделать, и подгружать результаты JS-ом.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кирилица в регулярных выражениях Ганж Общие вопросы Javascript 22 27.12.2012 01:58
Помогите с позиционными проверки в регулярных выражениях Papa Серверные языки и технологии 4 23.05.2010 20:41
вложенность this Макс Dojo toolkit 1 26.08.2009 18:24
Экранирование квадратных скобок в регулярных выражениях Holod Я не знаю javascript 3 27.05.2009 22:52