[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как найти слова между скобками?
McLotos
В строке может быть любое количество нужных нам подстрок
Подстроки находятся в фигурных скобках
Подстрока всегда состоит из двух слов
Слова разделяются точкой
Первое слово только буквами верхнего регистра
Второе слово обязательно с большой буквы
Длина слов не известна
Задача получить количество подстрок и слова их которых состоит подстрока
/(\{[+A-Z].[+A-Za-z]\})/

Такой код посылает куда по-дальше.

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
Изобрел вот такой вариант
/{[A-Z]+\.[A-Z{1}a-z]+\}/


_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
for($i=0;$i<count($this -> buffer);$i++)
{preg_match_all('/\{[A-Z]+\.[A-Z{1}a-z]+\}/',$arr[$i], $out, PREG_OFFSET_CAPTURE);}
print_r($out);

$out - пустой.
Я поэкспериментировал и понял что это из-за того что $i непостоянное число. Странно, но если я вместо $i ставлю число то всё работает

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
Вот что там не так?

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
kaww
/{[A-Z]+\.[A-Z][a-z]+}/
McLotos
kaww
а разве фигурные скобки не нужно экранировать если они тоже должны быть в строке?
и в твоём варианте не учтено что после точки только первая буква должна быть в верхнем регистре

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
kaww
Цитата (SergeySA @ 14.07.2014 - 09:05)
в твоём варианте не учтено что после точки только первая буква должна быть в верхнем регистре

посмотри внимательнее, все учтено /{[A-Z]+\.[A-Z][a-z]+}/
McLotos
Цитата (kaww @ 14.07.2014 - 13:22)
[A-Z][a-z]

А как же ограничение по количеству?
Если верить документации, то должно быть [A-Z]{1}[a-z]+

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
Вот так
for($i=0;$i<count($this -> buffer);$i++)
{preg_match_all('/\{[A-Z]+\.[A-Z{1}a-z]+\}/',$this->buffer[$i], $out[$i], PREG_OFFSET_CAPTURE);}
работает, просто получается очень большой массив с огромным количеством пустых элементов

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
kaww
[A-Z] - матчит один символ. т.е. [A-Z]{1} == [A-Z]
McLotos
Есть что покурить на тему регулярок? А-то что-то документация до меня туго доходит =)

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
Вот теперь у меня получается массив
    [6][1][0] = {HEAD.Title};
[
6][1][1] = 17;

[
7][1][0] = {HEAD.KeyWords};
[
7][1][1] = 31;

[
18][1][0] = {GOODS.Link};
[
18][1][1] = 9;

[
18][2][0] = {GOODS.Name};
[
18][2][1] = 27;

[
18][3][0] = {GOODS.Descr};
[
18][3][1] = 44;

[
18][4][0] = {GOODS.Logo};
[
18][4][1] = 71;

Первый ключ массива это номер строки в файле
Второй ключ это номер элемента в строке
Тот что всегда 0 это сам элемент
Тот что всегда 1 это позиция в строке
Как теперь узнать атрибутом какого тэга является конкретно взятый элемент?
Ну допустим [18][1]

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.