Помощник
|
Регулярные выражения |
InviS
|
Сообщение
#1
|
||
|
|
||
|
|||
Letmetouchyou |
1.7.2011, 11:13;
Ответить: Letmetouchyou
Сообщение
#2
|
|
например [PHP]/\s+(hello)\s+/[/PHP]
то учитывайте пробелы перед и после слова. еше так можно \b Граница слова a\b aaa aaa
|
|
|
InviS
|
Сообщение
#3
|
|
Да нет, проблема не с выбором слова hello.
Например у меня есть строка, В котором может быть слово "hello", а может и не быть. Если задать (hello)? - то все будет четко, но это слово сохранится в результате... а мне это не нужно.. |
|
|
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
|
Сообщение
#5
|
|
Думаю, что нельзя так :)
|
|
|
Mulder_hb |
1.7.2011, 12:07;
Ответить: Mulder_hb
Сообщение
#6
|
|
Ну и что с того, что сохраниться в результате? Не используйте соответствующий элемент результирующего массива либо удалить этот элемент. А если функция preg_match, то можно вообще не использовать третий параметр.
|
|
|
InviS
|
Сообщение
#7
|
|
Не используйте соответствующий элемент результирующего массива либо удалить этот элемент. Не сохранять в результаты - решение красивей, чем пропускать какие-то элементы, Вам не кажется? Если так мыслить, то можно и регулярные вообще не использовать, - просто поиск по строке :D P.S. просто было интересно, разве такого у вас не бывает? |
|
|
Letmetouchyou |
1.7.2011, 12:24;
Ответить: Letmetouchyou
Сообщение
#8
|
|
Не сохранять в результаты - решение красивей, чем пропускать какие-то элементы, Вам не кажется? Напрмиер: Вы ищите три соответствия в строке, которые могут быть и могут не быть, и вы будуте точно знать,что $result[1] - первое соответствие $result[2] - второе соответствие $result[3] - третье соответствие Ну и сделайте отдельную функцию которая будет после поиска регулярок, перебирать массив и удалять/заменять значения. Если вы волнуетесь о быстродействии и так далее, такой способ почти никак не повлияет, и будет более гибок |
|
|
Mulder_hb |
1.7.2011, 13:51;
Ответить: Mulder_hb
Сообщение
#9
|
|
Если вам нужен сам факт наличия определенного слова в строке, используйте функцию strpos().
|
|
|
Tolias |
28.7.2011, 4:06;
Ответить: Tolias
Сообщение
#10
|
|
|
Ребят, подскажите, пожалуйста, как я могу указать квантификатор для строки не запоминая ее? Делается это очень легко. Просто нужно указать последовательность ?: сразу после открывающей скобки, и тогда строка в круглых скобках запоминаться в переменную не будет. Пример: [PHP]/(?:(?:hello)+)/[/PHP]
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
База профилей+топики для Xrumer 12, регулярные обновления, скидки, бонусы. | 98 | xrumermaster | 49192 | 15.9.2019, 0:47 автор: -xrumer-master- |
|
База профилей+топики+гостевые+рефспам для Xrumer 12.ххх, регулярные обновления | 50 | xrumer-master | 12795 | 15.9.2019, 0:00 автор: xrumer-master |
|
Нужны рерайтеры. Простые и регулярные заказы. Оплата 30-35 рублей / 1000 символов б.п. |
3 | 13sanek | 1921 | 9.5.2017, 12:26 автор: Gadraser |
Текстовая версия | Сейчас: 26.4.2024, 7:20 |