Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подсчитать количество букв
 
 автор: kasmanaft   (21.06.2007 в 09:52)   письмо автору
 
 

Можно ли как-нибудь узнать количество вхождения подмаски изнутри рег. выражения?
Например, нужно чтобы количество букв "a" до " bla bla bla " было равно кочичеству букв "b" после него...
Конечно, их количество может меняться.

<?php
$text 
'aaaaaaaa bla bla bla bbbbbbbb';
// в идеале хотелось бы вот так (т.е. буквы не стоят вряд)
// $text = 'a-aaa-aaa-a bla bla bla b-bb-bbbb-b';
if (preg_match(""$text))
    echo 
'Количество букв совпадает';
?>

   
 
 автор: cheops   (21.06.2007 в 10:36)   письмо автору
 
   для: kasmanaft   (21.06.2007 в 09:52)
 

Скорее всего извлекать придётся в PHP и сравнивать уже в скрипте
<?php 
  $text 
'aaaaaaaa bla bla bla bbbbbbbb'
  
// в идеале хотелось бы вот так (т.е. буквы не стоят вряд) 
  // $text = 'a-aaa-aaa-a bla bla bla b-bb-bbbb-b'; 

  
$pattern "|([^\s]+)[\s]bla bla bla[\s]([^\s]+)|is";
  if (
preg_match($pattern$text$out)) 
  {
    if(
strlen($out[1]) == strlen($out[2]))
    echo 
'Количество букв совпадает'
  }
?>

   
 
 автор: kasmanaft   (21.06.2007 в 18:25)   письмо автору
 
   для: cheops   (21.06.2007 в 10:36)
 

Это, конечно, вариант, но хочется именно рег. выражением проверить.
Вообще-то нужно не именно количество букв сосчитать, а проверить чтобы каждому "а" соответствовал свой "b". (открытый - закрытый тег)
"bla bla bla" можно заменить на что-нибудь другое, чтобы там не встречалось букв "а" и "b".
Вооот...

Ломаю голову над рекурсивными шаблонами, кое-чего никак не могу додумать:
<?php
$text 
'aaaa texttext bbbbbbbbbbbbbbbbb';
if (
preg_match("#a((?>[^ab]+)|(?R))*b#"$text$regs))
    echo 
$regs[0];
?>

В $regs[0] попадает строка "aaaa texttext bbbb" - b столько же, сколько и a.
Остается проверить кончается ли на этом строка? ...
Но как это сделать, никак не соображу :(
(банально добавить $ не получится)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования