Автор Тема: RegExp кол-во вхождений  (Прочитано 4600 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн race1

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 11
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
RegExp кол-во вхождений
« : 09 Мая 2006, 06:48:17 »
Можно как-нибудь узнать кол-во вхождений чего-то в регулярных выражениях? Это нужно для поиска открытых и не закрытых тегов html. Например, человек написал \'bold\' и забыл закрыть тэг. А я смотрю потом что открытывающих тегов 1, а закрывающих 0 и добавляю закрывающий \'\'.

Оффлайн vladsu

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 271
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vladislavsurguchev.eu/
RegExp кол-во вхождений
« Ответ #1 : 09 Мая 2006, 07:26:46 »
Если есть желание сэкономить время, наше и свое, то:
http://www.w3.org/People/Raggett/tidy/
http://www.w3.org/QA/Tools/
есть и другие, гугл Вам в руки.
----------------------------------------------
Мой сайт чёрно-белых фотографий из разных уголков мира тут

Оффлайн xames

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
RegExp кол-во вхождений
« Ответ #2 : 12 Мая 2006, 20:46:01 »
$data=~s##$open++#ge;
$data=~s#
#$close++#ge;

if($open != $close) ....

Оффлайн Zerokool

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
RegExp кол-во вхождений
« Ответ #3 : 17 Мая 2006, 02:22:58 »
xames, все верно, но медленно.
while ($data =~ m ~~g) { ++open; }
так в 3-5 раз быстрее.

P.S. Извини. Вы@бываюсь, конечно :)

Оффлайн xames

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
RegExp кол-во вхождений
« Ответ #4 : 17 Мая 2006, 11:43:34 »
$count = ($data =~ m ~~g)

Оффлайн Zerokool

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
RegExp кол-во вхождений
« Ответ #5 : 17 Мая 2006, 14:39:20 »
xames, все верно. то же что и у меня. Согласитесь, что Перл потрясающий инструмент.

Оффлайн xames

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
RegExp кол-во вхождений
« Ответ #6 : 18 Мая 2006, 07:23:58 »
Немного тестов:

timethese (10_000_000,{
   \'A\' => q|while ($data =~ m ~~g) { ++$open; }|,
   \'B\' => q|while ($data =~ m ~~go) { ++$open; }|,
   \'C\' => q|$count = ($data =~ m ~~g)|,
   \'D\' => q|$count = ($data =~ m ~~go)|});

Benchmark: timing 10000000 iterations of A, B, C, D...
         A:  5 wallclock secs ( 6.10 usr + -0.01 sys =  6.09 CPU) @ 1642305.80/s
 (n=10000000)
         B:  6 wallclock secs ( 6.09 usr +  0.00 sys =  6.09 CPU) @ 1642036.12/s
 (n=10000000)
         C:  3 wallclock secs ( 4.61 usr +  0.01 sys =  4.62 CPU) @ 2165908.60/s
 (n=10000000)
         D:  3 wallclock secs ( 4.56 usr +  0.00 sys =  4.56 CPU) @ 2194426.16/s
 (n=10000000)

=))

Оффлайн Zerokool

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
RegExp кол-во вхождений
« Ответ #7 : 18 Мая 2006, 13:30:56 »
xames, ты был прав, а я нет. спасибо, что вправил мозги. я был обманут справочником. сам виноват. нужно было самому постараться с бэнчем, а не вас грузить. короче, извиняюсь.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28