X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Регулярные выражения
InviS
InviS
Topic Starter сообщение 1.7.2011, 10:23; Ответить: InviS
Сообщение #1


Ребят, подскажите, пожалуйста, как я могу указать квантификатор для строки не запоминая ее?
Т.е. можно записать /((hello)+)/ для определения строчки hello повторяющейся один или более раз, но получается что сохранится и hello и hellohello, если строка будет такой... Можно ли как-то в регулярных задавать совпадения полного слова без его сохранения в результате?
Что-то типа [hello]+ но с четко заданной последовательностью?!
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
сообщение 1.7.2011, 11:13; Ответить: Letmetouchyou
Сообщение #2


например [PHP]/\s+(hello)\s+/[/PHP]
то учитывайте пробелы перед и после слова.
еше так можно
\b Граница слова a\b aaa aaa
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
InviS
InviS
Topic Starter сообщение 1.7.2011, 11:16; Ответить: InviS
Сообщение #3


Да нет, проблема не с выбором слова hello.
Например у меня есть строка, В котором может быть слово "hello", а может и не быть. Если задать (hello)? - то все будет четко, но это слово сохранится в результате... а мне это не нужно..
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
сообщение 1.7.2011, 11:33; Ответить: Letmetouchyou
Сообщение #4


вроде так делать не парвильно.
Напрмиер:
Вы ищите три соответствия в строке, которые могут быть и могут не быть, и вы будуте точно знать,что
$result[1] - первое соответствие
$result[2] - второе соответствие
$result[3] - третье соответствие
И они будут даже если они пустые.

А в другом случае, все перемешается.

Да и помоему можно установть правило, чтобы не запоминеало слово вообще, а чтобы не запоминало его если его нет, помомему так нельзя.

(?:x) Находит x, но не запоминает найденное. Это называется "незапоминающие скобки". Найденная подстрока не сохраняется в массиве результатов и свойствах RegExp.Как и все скобки, объединяют находящееся в них в единый подпаттерн.
x(?=y)Находит x, только если за x следует y. Например, /Jack(?=Sprat)/ найдет 'Jack', только если за ним следует 'Sprat'. /Jack(?=Sprat|Frost)/ найдет 'Jack', только если за ним следует 'Sprat' или 'Frost'. Однако, ни 'Sprat' nor 'Frost' не войдут в результат поиска.
x(?!y) Находит x, только если за x не следует y. Например, /\d+(?!\.)/ найдет число, только если за ним не следует десятичная точка. /\d+(?!\.)/.exec("3.141") найдет 141, но не 3.141.


Вопрос:
ктото знает как сделать, чтобы результат после preg_match, напрмиер, был асоциативный массив? то ессть в регулярке указать ключи для нужных нам соотвествий?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
InviS
InviS
Topic Starter сообщение 1.7.2011, 11:45; Ответить: InviS
Сообщение #5


Думаю, что нельзя так :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 1.7.2011, 12:07; Ответить: Mulder_hb
Сообщение #6


Ну и что с того, что сохраниться в результате? Не используйте соответствующий элемент результирующего массива либо удалить этот элемент. А если функция preg_match, то можно вообще не использовать третий параметр.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
InviS
InviS
Topic Starter сообщение 1.7.2011, 12:11; Ответить: InviS
Сообщение #7


(Mulder_hb @ 1.7.2011, 15:07) *
Не используйте соответствующий элемент результирующего массива либо удалить этот элемент.


Не сохранять в результаты - решение красивей, чем пропускать какие-то элементы, Вам не кажется?
Если так мыслить, то можно и регулярные вообще не использовать, - просто поиск по строке :D

P.S. просто было интересно, разве такого у вас не бывает?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
сообщение 1.7.2011, 12:24; Ответить: Letmetouchyou
Сообщение #8


(InviS @ 1.7.2011, 15:11) *
Не сохранять в результаты - решение красивей, чем пропускать какие-то элементы, Вам не кажется?


(Letmetouchyou @ 1.7.2011, 14:33) *
Напрмиер:
Вы ищите три соответствия в строке, которые могут быть и могут не быть, и вы будуте точно знать,что
$result[1] - первое соответствие
$result[2] - второе соответствие
$result[3] - третье соответствие

Ну и сделайте отдельную функцию которая будет после поиска регулярок, перебирать массив и удалять/заменять значения. Если вы волнуетесь о быстродействии и так далее, такой способ почти никак не повлияет, и будет более гибок
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 1.7.2011, 13:51; Ответить: Mulder_hb
Сообщение #9


Если вам нужен сам факт наличия определенного слова в строке, используйте функцию strpos().
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Tolias
Tolias
сообщение 28.7.2011, 4:06; Ответить: Tolias
Сообщение #10


(InviS @ 1.7.2011, 13:23) *
Ребят, подскажите, пожалуйста, как я могу указать квантификатор для строки не запоминая ее?

Делается это очень легко. Просто нужно указать последовательность ?: сразу после открывающей скобки, и тогда строка в круглых скобках запоминаться в переменную не будет.
Пример: [PHP]/(?:(?:hello)+)/[/PHP]

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) База профилей+топики для Xrumer 12, регулярные обновления, скидки, бонусы.
98 xrumermaster 43487 15.9.2019, 0:47
автор: -xrumer-master-
Горячая тема (нет новых ответов) База профилей+топики+гостевые+рефспам для Xrumer 12.ххх, регулярные обновления
50 xrumer-master 9596 15.9.2019, 0:00
автор: xrumer-master
Открытая тема (нет новых ответов) Нужны рерайтеры. Простые и регулярные заказы.
Оплата 30-35 рублей / 1000 символов б.п.
3 13sanek 1623 9.5.2017, 12:26
автор: Gadraser


 



RSS Текстовая версия Сейчас: 11.5.2021, 14:56
Дизайн