Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.02.2015, 08:45
Аватар для maternik
Аспирант
Отправить личное сообщение для maternik Посмотреть профиль Найти все сообщения от maternik
 
Регистрация: 15.10.2013
Сообщений: 31

Подобрать регулярное выражение
Всем привет!
У меня есть текст со строками вида
<Inline название="узелок" параметр="1.6" параметры="0.028, -0.02, 0"/>

Но попадаются такие
<Inline название="узелок1" параметр="1.6" параметры="0.028, -0.02, 0"></Inline>

Хочу набить массив из кусков
['название="узелок" параметр="1.6" параметры="0.028, -0.02, 0"/>', 
'название="узелок1" параметр="1.6" параметры="0.028, -0.02, 0"></Inline>']

Однако не удаётся регулярное выражение, чтобы оба вида строк брало, типа:
mas = /название=.*\n*.*(\/>)|(</Inline>)/.exec(массив[i]);
Ответить с цитированием
  #2 (permalink)  
Старый 09.02.2015, 08:52
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Это xml, с ним не через регулярные выражения работают, а через XML парсер:
var document = new DOMParser().parseFromString(xml, 'application/xml');
// примеры поиска узлов:
document.getElementsByName('Inline');
document.querySelectorAll('Inline[название="узелок1"]');
// доступ к атрибутам найденного узла:
node.attributes
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 09.02.2015, 09:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от maternik
не удаётся регулярное выражение
Такое подойдет?

var str='<Inline название="узелок" параметр="1.6" параметры="0.028, -0.02, 0"/>'
str+='<Inline название="узелок1" параметр="1.7" параметры="0.029, -0.03, 0"></Inline>';
alert(str.match(/(название="[\s\S]*?)(?=((\/>)|(><)))/g));

Или тебе нужно именно такой массив
Сообщение от maternik
['название="узелок" параметр="1.6" параметры="0.028, -0.02, 0"/>', 'название="узелок1" параметр="1.6" параметры="0.028, -0.02, 0"></Inline>']
Ответить с цитированием
  #4 (permalink)  
Старый 09.02.2015, 09:24
Аватар для maternik
Аспирант
Отправить личное сообщение для maternik Посмотреть профиль Найти все сообщения от maternik
 
Регистрация: 15.10.2013
Сообщений: 31

danik.js,
Ну прост в xml-формате как раз такая соль, что пустые теги закрываются после перечисления атрибутов: <Inline/>. Вроде как гуд, но если хотелось бы сохранить структуру <Inline></Inline>, то работать придётся как с текстом, видимо?
Ответить с цитированием
  #5 (permalink)  
Старый 09.02.2015, 09:31
Аватар для maternik
Аспирант
Отправить личное сообщение для maternik Посмотреть профиль Найти все сообщения от maternik
 
Регистрация: 15.10.2013
Сообщений: 31

Сообщение от ksa Посмотреть сообщение
Такое подойдет?

var str='<Inline название="узелок" параметр="1.6" параметры="0.028, -0.02, 0"/>'
str+='<Inline название="узелок1" параметр="1.7" параметры="0.029, -0.03, 0"></Inline>';
alert(str.match(/(название="[\s\S]*?)(?=((\/>)|(><)))/g));
Спасибо! Думаю прокатит
Ответить с цитированием
  #6 (permalink)  
Старый 09.02.2015, 09:42
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

maternik, в xml главное теги закрывать и закрывать корректно. В твоем случае оба варианта корректны. Т.о. парсить можно без проблем...

Последний раз редактировалось ksa, 09.02.2015 в 10:52.
Ответить с цитированием
  #7 (permalink)  
Старый 09.02.2015, 09:56
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от maternik
но если хотелось бы сохранить структуру
Нафига оно надо? Короче, ты х*йней страдаешь, оттого и все проблемы.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 09.02.2015, 12:22
Аватар для maternik
Аспирант
Отправить личное сообщение для maternik Посмотреть профиль Найти все сообщения от maternik
 
Регистрация: 15.10.2013
Сообщений: 31

Я использую библиотеку x3dom для встраивания X3D-разметки на страницу html. Для подключения внешних файлов разметки используется тег <Inline>. Однако библиотека x3dom не понимает данный тег, если отсутствует парный ему, закрывающий </Inline>, и внешняя разметка не отображается на странице. ОК?
И да, я знаю, чем страдаю
Ответить с цитированием
  #9 (permalink)  
Старый 09.02.2015, 19:20
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от maternik
У меня есть текст со строками вида
Где он у тебя есть?
Если встраиваешь в XHTML - такой текст можно встроить. Если в HTML - нельзя.
У тебя есть причины не использовать XHTML?

В общем, ты все-таки страдаешь )
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярное выражение tata4ka Общие вопросы Javascript 4 15.11.2014 00:56
Регулярное выражение и метод test tsigel Общие вопросы Javascript 3 30.08.2013 13:47
регулярное выражение literator Ваши сайты и скрипты 1 18.08.2013 18:24
Регулярное выражение: любой символ, включая перевод строки Gleb Общие вопросы Javascript 3 28.07.2011 12:15
регулярное выражение theo_ Общие вопросы Javascript 15 21.06.2010 10:29