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

baal1988 07.10.2008 17:57

Регулярные выражения вытаскивание по шаблону
 
Имеется строка к примеру вот такая
var str = "Number of tube((13 Hi all people * _ +)) Number of tube((HI AKK))";

1. Необходимо вытащить данные которые содержаться в круглых двойных скобках
2. Почему если в шаблоне содержится кириллица то при нахождении результата по шаблону вылазят какие-то кракозябры а не русские буквы ? Это не применительно к этому примеру а вообще ? Сильно не пинайте, только начал изучение регулярных выражений ...
Я делаю вот так но не получается
var reg = /Number of tube\(*(.*)\)*/;
var str = "Number of tube((13 Hi all people * _ +)) Number of tube((HI AKK))";
var arr=reg.exec(str);
document.write(arr);

ZoNT 07.10.2008 18:38

var reg = /\(+(.*?)\)+/g;
var str = "Number of tube((13 Hi all people * _ +)) Number of tube((HI AKK))";
var arr=str.match(reg);
alert(arr);


только потом сделать реплейс каждому элементу (убрать скобки)...

Андрей Параничев 07.10.2008 18:52

var str = "Number of tube((13 Hi all people * _ +)) Number of tube((HI AKK))";
alert(str.match(/([^\(\)]+)(?=\)+)/g));

Для нескольких результатов используйте match и флаг "g". Кстати, на сайте есть хорошая статья про регулярные выражения.

baal1988 07.10.2008 19:28

Хорошо спасибо , а если мне важно знать вернее необходимо знать что находится перед двойными скобками ? Например в примере "Number of tube?" если строка например вида
var str = "Number of tube((13 Hi all people * _ +)) Number of tube((HI AKK)) Number of city((HI DEEP))";

И мне требуется найти то что находится между двойными скобками + перед двойными скобками должно стоять выражение Number of tube
а по поводу второго вопроса могли бы помочь чем-нибудь ? Про проблему в кодировке ?

jsch 08.10.2008 09:44

ответ
 
var str = "Number of tube((13 Hi all people * _ +)) Number of tube((HI AKK)) Number of city((HI DEEP))";
alert(str.match(/Number of tube([^\(\)]+)(?=\)+)/g));

по поводу кодировки:
проставлена ли кодировка на весь документ?

jsch 08.10.2008 09:46

ответ
 
хотелось бы взглянуть на содержимое, HTML+JS(если отдельно)

ZoNT 08.10.2008 11:21

var str = "Number of tube13 Hi all people * _ +)) Number of tubeHI AKK))";
alert(str.match(/([^\(\)]+)(?=\)+)/g));

результат: Number of tube13 Hi all people * _ +,Number of tubeHI AKK

baal1988 08.10.2008 12:15

Цитата:

Сообщение от ZoNT (Сообщение 6843)
var str = "Number of tube13 Hi all people * _ +)) Number of tubeHI AKK))";
alert(str.match(/([^\(\)]+)(?=\)+)/g));

результат: Number of tube13 Hi all people * _ +,Number of tubeHI AKK

Да результат именно такой , но ваша строка str не содержит после слов Number of tube двойные закрывающие скобки поэтому результат именно такой .....

baal1988 08.10.2008 12:19

Цитата:

Сообщение от jsch (Сообщение 6839)
var str = "Number of tube((13 Hi all people * _ +)) Number of tube((HI AKK)) Number of city((HI DEEP))";
alert(str.match(/Number of tube([^\(\)]+)(?=\)+)/g));

по поводу кодировки:
проставлена ли кодировка на весь документ?

Результат null, не работает

ZoNT 08.10.2008 12:51

var str = "1) Number of tube13(( Hi all people * _ +)) Number of tube((HI AKK))";
alert(str.match(/([^\(\)]+)(?=\)+)/g));


Результат - неверный :)


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