Regex извлекать текст между шаблонами - PullRequest
9 голосов
/ 16 июня 2011

Мне нужна ваша помощь с регулярным выражением в javascript.

У меня есть a-тег с шаблоном следования

<a href='#'>
  <!--:de-->some german text<!--:--><!--:en-->some english text<!--:-->
</a>

Итак, теперь я ищу регулярное выражениеЧто извлекает мне каждая часть

 1. <!--:de-->some german text<!--:-->
 2. <!--:en-->some german text<!--:-->

ОЧЕНЬ большое спасибо

Ответы [ 3 ]

19 голосов
/ 16 июня 2011

Попробуйте это:

var str = '<!--:de-->some german text<!--:--><!--:en-->some english text<!--:-->'; 
var match =  str.match(/de-->([^<]+).+?en[^>]+>([^<]+)/i);
var textInDe = match[1]; 
var textInEn = match[2]; 
1 голос
/ 16 июня 2011

Попробуйте этот код Javascript:

var ger = /<!--:de-->.*?<!--:-->/g;
document.writeln(html.match(ger).map(function (s) { return s; }));

var eng = /<!--:en-->.*?<!--:-->/g;
document.writeln(html.match(eng).map(function (s) { return s; }));

OUTPUT

немного немецкого текста

немного английского текста

1 голос
/ 16 июня 2011

Если вы ожидаете более 2 частей, я бы порекомендовал вам разделить строку по разделителю

var str="<!--:de-->some german text<!--:--><!--:en-->some english text<!--:--><!--:fr-->some french text<!--:-->";

var col_array=str.split("<!--:-->");
var part_num=0;
while (part_num < col_array.length)
{
 document.write(col_array[part_num]+"<br>");
 part_num+=1;
}
...