Regex распознают все слова только

Посмотрите на определение re.sub :

re.sub(pattern, repl, string[, count, flags])

4-м аргументом является количество, Вы используете re.MULTILINE (который равняется 8) как количество, не как флаг.

Любое использование параметр, передаваемый по имени:

re.sub('^//', '', s, flags=re.MULTILINE)

Или компиляция regex сначала:

re.sub(re.compile('^//', re.MULTILINE), '', s)

79
задан Eric Leschinski 6 January 2014 в 17:54
поделиться

2 ответа

Используйте границы слов:

/\b($word)\b/i

Или, если вы ищете «СПЕКТР», как в примере Синан Унюра:

/(?:\W|^)(\Q$word\E)(?:\W|$)/i
100
ответ дан 24 November 2019 в 10:13
поделиться

Использование \ b может дать удивительные результаты. Лучше выяснить, что отделяет слово от его определения, и включить эту информацию в свой шаблон.

#!/usr/bin/perl

use strict; use warnings;

use re 'debug';

my $str = 'S.P.E.C.T.R.E. (Special Executive for Counter-intelligence,
Terrorism, Revenge and Extortion) is a fictional global terrorist
organisation';

my $word = 'S.P.E.C.T.R.E.';

if ( $str =~ /\b(\Q$word\E)\b/ ) {
    print $1, "\n";
}

Вывод:

Compiling REx "\b(S\.P\.E\.C\.T\.R\.E\.)\b"
Final program:
   1: BOUND (2)
   2: OPEN1 (4)
   4:   EXACT  (9)
   9: CLOSE1 (11)
  11: BOUND (12)
  12: END (0)
anchored "S.P.E.C.T.R.E." at 0 (checking anchored) stclass BOUND minlen 14
Guessing start of match in sv for REx "\b(S\.P\.E\.C\.T\.R\.E\.)\b" against "S.P
.E.C.T.R.E. (Special Executive for Counter-intelligence,"...
Found anchored substr "S.P.E.C.T.R.E." 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(S\.P\.E\.C\.T\.R\.E\.)\b" against "S.P.E.C.T.R.E. (Special Exec
utive for Counter-intelligence,"...
   0           |  1:BOUND(2)
   0           |  2:OPEN1(4)
   0           |  4:EXACT (9)
  14      |  9:CLOSE1(11)
  14      | 11:BOUND(12)
                                  failed...
Match failed
Freeing REx: "\b(S\.P\.E\.C\.T\.R\.E\.)\b"
8
ответ дан 24 November 2019 в 10:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: