LINUX.ORG.RU

ведь оба условия выполняются?

Раздельно, но не вместе.

anonymous
()
$ perl -Mre=debug -e'"yesyes"=~/\byes\b/'
Compiling REx "\byes\b"
Final program:
   1: BOUND (2)
   2: EXACT <yes> (4)
   4: BOUND (5)
   5: END (0)
anchored "yes" at 0 (checking anchored) stclass BOUND minlen 3 
Guessing start of match in sv for REx "\byes\b" against "yesyes"
Found anchored substr "yes" at offset 0...
start_shift: 0 check_at: 0 s: 0 endpos: 1
Does not contradict STCLASS...
Guessed: match at offset 0
Matching REx "\byes\b" against "yesyes"
   0 <> <yesyes>             |  1:BOUND(2)
   0 <> <yesyes>             |  2:EXACT <yes>(4)
   3 <yes> <yes>             |  4:BOUND(5)
                                  failed...
   3 <yes> <yes>             |  1:BOUND(2)
                                  failed...
Match failed

Промежуток между двумя буквами не считается за границу слова (\b).

AITap ★★★★★
()
Ответ на: комментарий от normann

В Вашем случае Вы спрашиваете: «А есть ли в строке 'yesyes' такая подстрока, что текст её 'yes', при чём с обеих сторон у неё границы слова (например, начало строки, конец строки, пробел, etc)?». А в строке то таких нет: либо с одной стороны нет границы слова, либо с другой.

helios ★★★★★
()
Ответ на: комментарий от normann
$ perl -Mre=debug -e'"yesyes"=~/\b(yes)+\b/'
Compiling REx "\b(yes)+\b"
Final program:
   1: BOUND (2)
   2: CURLYM[1] {1,32767} (12)
   6:   EXACT <yes> (10)
  10:   SUCCEED (0)
  11: NOTHING (12)
  12: BOUND (13)
  13: END (0)
anchored "yes" at 0 (checking anchored) stclass BOUND minlen 3 
Guessing start of match in sv for REx "\b(yes)+\b" against "yesyes"
Found anchored substr "yes" at offset 0...
start_shift: 0 check_at: 0 s: 0 endpos: 1
Does not contradict STCLASS...
Guessed: match at offset 0
Matching REx "\b(yes)+\b" against "yesyes"
   0 <> <yesyes>             |  1:BOUND(2)
   0 <> <yesyes>             |  2:CURLYM[1] {1,32767}(12)
   0 <> <yesyes>             |  6:  EXACT <yes>(10)
   3 <yes> <yes>             | 10:  SUCCEED(0)
                                    subpattern success...
                                  CURLYM now matched 1 times, len=3...
   3 <yes> <yes>             |  6:  EXACT <yes>(10)
   6 <yesyes> <>             | 10:  SUCCEED(0)
                                    subpattern success...
                                  CURLYM now matched 2 times, len=3...
   6 <yesyes> <>             |  6:  EXACT <yes>(10)
                                    failed...
                                  CURLYM trying tail with matches=2...
   6 <yesyes> <>             | 12:  BOUND(13)
   6 <yesyes> <>             | 13:  END(0)
Match successful!
Freeing REx: "\b(yes)+\b"
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.