Регулярные выражения Перл совместимые.preg_match_all().
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Регулярные выражения Перл... Expand / Collapse
Автор
Сообщение
02.01.2007 9:57
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 28.12.2007 15:30
Сообщ.: 245, Visits: 2 102
Какая разница между (["выражение"]+) и ["выражение"]+?
Сообщ. #909389
02.01.2007 16:42
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 28.12.2007 15:30
Сообщ.: 245, Visits: 2 102
текст1 "неизвесный текст" числа "неизвесный текст" текст2
Как вытащить только числа?

Пробовал так ([ \w]+)([\d]+)([ \w]+)/i s не выходит

Посоветуйте!

Сообщ. #909397
03.01.2007 11:57
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 11.08.2008 17:37
Сообщ.: 2 836, Visits: 30 979
в скобках найденое соответствие запоминается, а без неет, в этом отличие

$exp = "xx 23 xxyy 45 yxz";
$exp = preg_match_all("/\d+/",$exp , $arr);
echo $arr[0][0]."-".$arr[0][1];

Сообщ. #909405
03.01.2007 12:39
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 28.12.2007 15:30
Сообщ.: 245, Visits: 2 102
Извеняюсь, немного неправильно задал вопрос, текст к которому надо применить регулярное следующий

текст_0 "неизвесный текст" числа_0 "неизвесный текст" текст_001

текст1 "неизвесный текст" числа_1 "неизвесный текст" текст2

текст3 "неизвесный текст" числа_2 "неизвесный текст" текст4

Извлечь надо числа_1

Делал так /текст1[ \w]+([\d+])[ \w]+текст2/i s U

Но почемуто не идет!

Сообщ. #909407
04.01.2007 15:42
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 28.12.2007 15:30
Сообщ.: 245, Visits: 2 102
Вот по ходу роботы появилось еще несколько вопросов

Как в регулярных позначить выражение пусто или символы (пробовал [^$|\w+])?
Как обозначить только буквы от а до Z (без учета регистра)?(пробовал [{a-Z}+])

Сообщ. #909415
05.01.2007 12:25
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 11.08.2008 17:37
Сообщ.: 2 836, Visits: 30 979
приведи конкретный текст и скажи что из него должно получаться, мы поможем
Сообщ. #909421
05.01.2007 13:53
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 28.12.2007 15:30
Сообщ.: 245, Visits: 2 102
<UL><B>Процессор</B>
                  <UL>
                    <LI>Intel XScale : <FONT class=descr>PXA250</FONT>
                    <LI>Тактовая частота : <FONT class=descr>400 Mhz</FONT>

вот текст как есть с пробелами и переходом на новую строчку (enter)

Достать надо Intel XScale PXA250

и отдельно PXA250

Сообщ. #909423
06.01.2007 12:59
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 11.08.2008 17:37
Сообщ.: 2 836, Visits: 30 979
попробуй эти два примера, может передалешь как тебе нужно

/*первый пример*/
$arr=array();
$tx="<UL><B>Процессор</B>
                  <UL>
                    <LI>Intel XScale : <FONT class=descr>PXA250</FONT>
                    <LI>Тактовая частота : <FONT class=descr>400 Mhz</FONT> ";
$tx=strip_tags($tx);
$e=explode("",$tx);
for($i=0;$i<count($e);$i++){
 $t=explode(":",$e[$i]);
 if(trim($t[0])&&trim($t[1])){
 $arr[count($arr)]=array($t[0],$t[1]);
 echo $t[0]."|".$t[1]."<br>";
 }
}
/*второй пример*/
$arr=array();
$tx="<UL><B>Процессор</B>
                  <UL>
                    <LI>Intel XScale : <FONT class=descr>PXA250</FONT>
                    <LI>Тактовая частота : <FONT class=descr>400 Mhz</FONT> ";

$sh="/\>(.*?)\</m";
preg_match_all($sh,$tx , $arr);
for($i=0;$i<count($arr[0]);$i++){
$arr[0][$i]=str_replace(">","",$arr[0][$i]);
$arr[0][$i]=str_replace("<","",$arr[0][$i]);
$arr[0][$i]=str_replace(":","",$arr[0][$i]);
$arr[0][$i]=trim($arr[0][$i]);
echo $arr[0][$i]."<br>";
}

Сообщ. #909434
09.01.2007 10:28
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being