Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярные выражения вытаскивание по шаблону (https://javascript.ru/forum/misc/1936-regulyarnye-vyrazheniya-vytaskivanie-po-shablonu.html)

ZoNT 08.10.2008 15:56

почему (?= работает - вот в чём вопрос :)

ZoNT 08.10.2008 16:03

(?= работает только в конце...

Zeroglif 08.10.2008 23:18

Цитата:

Сообщение от baal1988
Хочется чтобы результатом было - 13 Hi all people * _ +,HI AKK,HI HOUSE

var s = '1) Number of tube((13 Hi all people * _ +)) Number of tube((HI AKK))',
    r = /Number of tube\(\((.*?)\)\)/g,
    a = [];
while (r.exec(s)) {
    a[a.length] = RegExp.$1;
}
alert(a);

jsch 09.10.2008 07:35

ответ
 
var word = "Number of tube";
var number_of_skobka = 2;
var str = "1) Number of tube((13 Hi all people * _ +)) Number of tube((HI AKK)) Number of Kills ((Privet)) Number of tube((HI HOUSE))";
var reg1 = new RegExp(word+"\\({"+number_of_skobka+"}[^\\)\\(]+(?=\\){"+number_of_skobka+"})","g");
var reg2 = new RegExp(word+"\\({"+number_of_skobka+"}");
alert(reg1.toString());
alert(reg2.toString());
var arr = str.match(reg1).join("").split(reg2);
alert(arr);

тока вот arr[0] будет всегда пустой

и еще может кто подскажет почему в js в регулярных выражениях просмотр назад не работает?
так бы можно было бы обойтись одной строкой
str.match(/(?<=Number of tube\({2})[^\(\)]+(?=\){2})/g)

jsch 09.10.2008 08:06

ответ
 
только что заметил: в IE у переменной arr нет первого пустого элемента

Kolyaj 09.10.2008 09:42

Цитата:

Сообщение от jsch
и еще может кто подскажет почему в js в регулярных выражениях просмотр назад не работает?

Если имеются в виду обратные ссылки, то они обозначаются $N.

Цитата:

Сообщение от jsch
только что заметил: в IE у переменной arr нет первого пустого элемента

Есть такая бага, если нужно все выражение приходится брать его в скобки.

jsch 09.10.2008 10:11

ответ
 
Цитата:

Сообщение от Kolyaj (Сообщение 6910)
Если имеются в виду обратные ссылки, то они обозначаются $N.

нее. выражение типа (?<=шаблон)

Kolyaj 09.10.2008 10:51

Цитата:

Сообщение от jsch
нее. выражение типа (?<=шаблон)

Ну эти много где не поддерживаются, а если поддерживаются, то только фиксированной длины. Если учитывать упомянутую багу ИЕ с нулевым элементом, то они особо и не нужны.


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