Это одно из регулярных выражений, которое вы можете использовать:
(?:^\s+|[^\w\s]+\s*|\b[^\d\s]+\s+)(April)\b(?!\s*\w*\d)
с установленным флагом безразличного регистра. Целевое слово фиксируется в группе захвата 1.
Демо
Python. Модуль регулярных выражений выполняет следующие операции:
(?: # begin non-cap grp
^ # match beginning of line
\s* # match 0+ whitespace characters
| # or
[^\w\s]+ # match 1+ chars other than word chars and whitespace
\s* # match 0+ whitespace chars
| # or
\b # match word break
[^\d\s]+ # match 1+ chars other than digits and whitespace
\s+ # match 1+ whitespace chars
) # end non-cap grp
(April) # match 'April' in capture group
\b # match word break
(?! # begin negative lookahead
\s* # match 0+ whitespace chars
\w* # match 0+ word chars
\d # match a digit
) # end negative lookahead
Подход, который я выбрал, заключался в том, чтобы указать, что может предшествовать "April"
, а почему не может следовать за ним. Я не могу указать, что не может предшествовать "April"
, так как для этого потребуется отрицательный взгляд назад, который не поддерживается механизмом регулярных выражений Python.
Я предположил, что "April"
может:
- находиться в начале строки, за которой, возможно, следуют пробелы;
- должен предшествовать символ, который не является ни символом слова, ни пробелом, возможно, сопровождаемый пробелами; или
- должно предшествовать слово, не содержащее цифр, возможно, за которым следуют пробелы.
Я также предположил, что за "April"
следует слово break, за которым нельзя следовать словом, содержащим ди git, возможно, с предшествующими пробелами.