Вложенность в ругулярных выражениях
Всем привет.
Помогите пожалуйста сделать вложенную замену в регулярном выражении в исходных данных вида "Hello "world", yahoo!", в «Hello «world», yahoo!» Сделал замену без вложенностей так: function replace(node) { var decs = node[0].text; var quote = /"([^"]*)"/g; decs = decs.replace(quote, '«$1»'); return decs; } Спасибо. |
А как скрипт должен догадаться, так нужно заменять «Hello «world», yahoo!» или так «Hello »world«, yahoo!»? Кавычки-то не отличаются друг от друга.
|
Цитата:
|
Нет, вы не поняли. Вот встретили вы в строке кавычку ". На что её нужно заменить: «, », „ или “?
|
Цитата:
Допустим, в предложении у нас нет вложенных кавычек: В "Интерросе" это подтвердили, хотя в марте—апреле компания говорила о такой возможности. Но могут быть предложения, где имеют быть место вложенные кавычки, пример: "Любой buy-back, когда ты ("Интеррос".— "Ъ") управляешь менеджментом и регистратором, это всегда непропорциональная покупка акций". Мне необходимо заменить кавычки вида "" на типографские — «» в случае если нет вложенных кавычек, т. е. так: В «Интерросе» это подтвердили, хотя в марте—апреле компания говорила о такой возможности. и так, если есть вложенные кавычки: «Любой buy-back, когда ты („Интеррос“.— „Ъ“) управляешь менеджментом и регистратором, это всегда непропорциональная покупка акций». Стало понятней? |
Цитата:
Любой buy-back, когда ты ( .— ) управляешь менеджментом и регистратором, это всегда непропорциональная покупка акций Как эту ситуацию отличить от вложенных кавычек? |
Цитата:
|
Цитата:
"aaa"bbb"ccc" Может вам лучше типограф попробовать заюзать? |
Цитата:
"aaa"bbb"ccc" — я думаю вложенные. Типограф Лебедевский не подходит, нужно именно на JS. |
Цитата:
Цитата:
|
Цитата:
|
Ваши примеры только для человека очевидны. Запрограммировать это будет не так просто.
|
Цитата:
|
Цитата:
http://www.erlang.com.ru/devanagari |
как вариант, при условии что "точка и пробел" это конец предложения )))
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title></title> </head> <body> <script language="JavaScript" type="text/javascript"> var str = 'В "Интерросе" это подтвердили, хотя в марте—апреле компания говорила о такой возможности.\ "Любой buy-back, когда ты ("Интеррос".— "Ъ") управляешь менеджментом и регистратором, это всегда непропорциональная покупка акций".'; function g(a) { a = a.split(/\.\s/); for (var c = /^"(.*?)"(\.?)$/g, d = /("(.*?)")/g, b = 0; b < a.length; b++) if (c.test(a[b])) { a[b] = a[b].replace(c, "‹‹$1››$2"); a[b] = a[b].replace(d, "„$2“") } else a[b] = a[b].replace(d, "‹‹$2››"); return a.join(". ") }; document.write(g('"aaa"bbb"ccc"')+"<br />"); document.write(g('"Hello "world", yahoo!"')+"<br />"); document.write(g(str)) </script> </body> </html> |
Спасибо рони.
Кстати можно ещё подглядеть реализацию http://www.erlang.com.ru/devanagari |
Часовой пояс GMT +3, время: 10:39. |