Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вложенность в ругулярных выражениях (https://javascript.ru/forum/misc/11016-vlozhennost-v-rugulyarnykh-vyrazheniyakh.html)

artwalek 02.08.2010 13:59

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

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


Спасибо.

Kolyaj 02.08.2010 14:33

А как скрипт должен догадаться, так нужно заменять «Hello «world», yahoo!» или так «Hello »world«, yahoo!»? Кавычки-то не отличаются друг от друга.

artwalek 02.08.2010 14:51

Цитата:

Сообщение от Kolyaj (Сообщение 65995)
А как скрипт должен догадаться, так нужно заменять «Hello «world», yahoo!» или так «Hello »world«, yahoo!»? Кавычки-то не отличаются друг от друга.

Спасибо за замечание, упустил из виду, вложенные кавычки должны быть вида: «Hello „world“, yahoo!»

Kolyaj 02.08.2010 14:53

Нет, вы не поняли. Вот встретили вы в строке кавычку ". На что её нужно заменить: «, », „ или “?

artwalek 02.08.2010 15:02

Цитата:

Сообщение от Kolyaj (Сообщение 65998)
Нет, вы не поняли. Вот встретили вы в строке кавычку ". На что её нужно заменить: «, », „ или “?

Хорошо, поясню так.
Допустим, в предложении у нас нет вложенных кавычек:
В "Интерросе" это подтвердили, хотя в марте—апреле компания говорила о такой возможности.

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

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

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

Стало понятней?

Kolyaj 02.08.2010 15:20

Цитата:

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

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

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

Как эту ситуацию отличить от вложенных кавычек?

artwalek 02.08.2010 15:35

Цитата:

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

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

Как эту ситуацию отличить от вложенных кавычек?

Думаю формализовать так: делать либо вложенную замену, либо двойной проход строки. Второй вариант мне кажется предпочтительней: сперва менять все на левую кавычку, а а на втором менять каждую вторую.

Kolyaj 02.08.2010 15:42

Цитата:

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

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

"aaa"bbb"ccc"

Может вам лучше типограф попробовать заюзать?

artwalek 02.08.2010 15:47

Цитата:

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

"aaa"bbb"ccc"

Может вам лучше типограф попробовать заюзать?

Возможно и не осознаю, для меня это пока в новинку.

"aaa"bbb"ccc" — я думаю вложенные.
Типограф Лебедевский не подходит, нужно именно на JS.

Kolyaj 02.08.2010 15:51

Цитата:

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

Почему?

Цитата:

Сообщение от artwalek
Типограф Лебедевский не подходит, нужно именно на JS.

Можно бэкенд на сервере сделать, и подгружать результаты JS-ом.


Часовой пояс GMT +3, время: 00:48.