Forum Webscript.Ru

Программирование => PHP => Тема начата: gad от 26 Декабря 2002, 16:04:16

Название: регулярные выражения
Отправлено: gad от 26 Декабря 2002, 16:04:16
есть такое
                     лорврилыавж : jhbkdvsf
вобщем ключ - двоеточие
нужно прочитать слово до него, между словом и двоеточием может быть пробел или 2.
$l=preg_match ("/(\\S*)\\s:/",$line,$st); - так работает с пробелом ну и:$l=preg_match ("/(\\S*):/",$line,$st); - без оного
А вот как эти строки в одну сунуть ?
Название: регулярные выражения
Отправлено: tserbis от 26 Декабря 2002, 16:19:41
[удалено мною (поспешил:-)]
Название: регулярные выражения
Отправлено: tserbis от 26 Декабря 2002, 16:23:27
"/(\\S*)\\s?:/"
Название: регулярные выражения
Отправлено: Tronyx от 26 Декабря 2002, 16:24:38
Если я тебя правильно понял:

$str="лорврилыавж : jhbkdvsf";
preg_match("/^[^:]+/", $str, $p);
$word=trim($p[0]);
Название: регулярные выражения
Отправлено: rembo от 27 Декабря 2002, 05:48:31
а можеть не надо париться с регами?
есть же ведь explode(), trim().... если таких строчек много то это будет куда быстрее
Название: регулярные выражения
Отправлено: gad от 27 Декабря 2002, 06:27:46
explode(),  не пойдет - в строке есть еше другой ключ-разделитель
 tserbis  
 
так нельзя "/(\\S*)\\s?:/" -пробела может не быть совсем.
(Прошу прощения- это я в начале не сказал).
"/^[^:]+/", - это что-то похоже, но берет всю строку до двоеточия, а у меня там еще разделитель - точка.
Примерно так:
слово.2343                    sdlfksndlvn: sdfsdfs345453
причем 2345 может не быть

Спасибо
Название: регулярные выражения
Отправлено: Tronyx от 27 Декабря 2002, 08:58:43
Цитировать
это что-то, похоже, но берет всю строку до двоеточия, а у меня там еще разделитель - точка.

ТЫ ДУМАЕШЬ, ЧТО ЗДЕСЬ СБОРИЩЕ ТЕЛЕПАТОВ!!! то у него там пробела может не быть, то у него какой-то разделитель в виде точки, и чёрт его знает, что ещё с этим разделителем делать! Учись правильно задавать вопросы, и нормально описывать то, что тебе нужно сделать! В следующий раз удалю или закрою тему.

Цитировать
explode(), не пойдет - в строке есть еше другой ключ-разделитель

Нормально храни данные и не мачайся.
Название: регулярные выражения
Отправлено: Меняздесьдавнонет от 27 Декабря 2002, 10:58:38
вообще-то да.
простейшие строковые операции.
две strpos - найти разделители,
substr - "слово" вырезать
и trim - пробелы обрезать
и никаких регулярных.
Название: регулярные выражения
Отправлено: gad от 27 Декабря 2002, 12:19:09
этобысрее чем выражения?
меня смущает что одну строку 2 раза перелопачивать надо.
Название: регулярные выражения
Отправлено: Xander от 27 Декабря 2002, 12:53:07
Найти в строке определенный символ, и разбить по нему строку заведомо быстрее, чем скомпилировать шаблон для регекспа, и применить его к той же строке. Регекспы в принципе довольно затратная вещь.
Название: регулярные выражения
Отправлено: Меняздесьдавнонет от 27 Декабря 2002, 13:23:26
gad
ты действительнго думаешь, что регэксп строку перелопачивает ОДИН раз?
Название: регулярные выражения
Отправлено: Tronyx от 27 Декабря 2002, 14:12:06
Цитировать
меня смущает что одну строку 2 раза перелопачивать надо.

Ни кто от этого не умрёт.