Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.10.2008, 17:57
Интересующийся
Отправить личное сообщение для baal1988 Посмотреть профиль Найти все сообщения от baal1988
 
Регистрация: 14.08.2008
Сообщений: 28

Регулярные выражения вытаскивание по шаблону
Имеется строка к примеру вот такая
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);
Ответить с цитированием
  #2 (permalink)  
Старый 07.10.2008, 18:38
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

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


только потом сделать реплейс каждому элементу (убрать скобки)...
Ответить с цитированием
  #3 (permalink)  
Старый 07.10.2008, 18:52
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

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

Для нескольких результатов используйте match и флаг "g". Кстати, на сайте есть хорошая статья про регулярные выражения.
Ответить с цитированием
  #4 (permalink)  
Старый 07.10.2008, 19:28
Интересующийся
Отправить личное сообщение для baal1988 Посмотреть профиль Найти все сообщения от baal1988
 
Регистрация: 14.08.2008
Сообщений: 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
а по поводу второго вопроса могли бы помочь чем-нибудь ? Про проблему в кодировке ?

Последний раз редактировалось baal1988, 07.10.2008 в 19:38.
Ответить с цитированием
  #5 (permalink)  
Старый 08.10.2008, 09:44
jsch
 
Сообщений: n/a

ответ
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));

по поводу кодировки:
проставлена ли кодировка на весь документ?
Ответить с цитированием
  #6 (permalink)  
Старый 08.10.2008, 09:46
jsch
 
Сообщений: n/a

ответ
хотелось бы взглянуть на содержимое, HTML+JS(если отдельно)
Ответить с цитированием
  #7 (permalink)  
Старый 08.10.2008, 11:21
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

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
Ответить с цитированием
  #8 (permalink)  
Старый 08.10.2008, 12:15
Интересующийся
Отправить личное сообщение для baal1988 Посмотреть профиль Найти все сообщения от baal1988
 
Регистрация: 14.08.2008
Сообщений: 28

Сообщение от ZoNT Посмотреть сообщение
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 двойные закрывающие скобки поэтому результат именно такой .....
Ответить с цитированием
  #9 (permalink)  
Старый 08.10.2008, 12:19
Интересующийся
Отправить личное сообщение для baal1988 Посмотреть профиль Найти все сообщения от baal1988
 
Регистрация: 14.08.2008
Сообщений: 28

Сообщение от jsch Посмотреть сообщение
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, не работает
Ответить с цитированием
  #10 (permalink)  
Старый 08.10.2008, 12:51
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

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


Результат - неверный
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения задача посложнее faunder Общие вопросы Javascript 5 15.09.2008 14:17
Регулярные выражения faunder Общие вопросы Javascript 2 15.09.2008 09:49
регулярные выражения в JS bifidokk Events/DOM/Window 2 02.06.2008 12:29