@0ldn0mad

Почему так работают регулярные выражения?

В python рег. выражения работают правильно, например:
import re
s = '''Если ты хочешь построить корабль, не надо созывать людей, планировать, делить работу, доставать инструменты. 
Надо заразить людей стремлением к бесконечному морю. Тогда они сами построят корабль.'''
pattern = r'\w+'
match = re.findall(pattern, s)
if match:
    print(match)

Выводит ожидаемо:
['Если', 'ты', 'хочешь', 'построить', 'корабль', 'не', 'надо', 'созывать', 'людей', 'планировать', 'делить', 'работу', 'доставать', 'инструменты', 'Надо', 'заразить', 'людей', 'стремлением', 'к', 'бесконечному', 'морю', 'Тогда', 'они', 'сами', 'построят', 'корабль']

Делаю то же самое в программе, на выходе черт знает что:
\w [a-z0-9] Буквы и цифры
5edc091f452b6192908680.png
Вообще не видит ни букв, ни слов.
Меняю на большую W
\W [^a-z0-9] Кроме букв и цифр
5edc09a0bb09a035601032.png
А здесь видит и буквы и цифры. Что не так?
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ответы на вопрос 2
@dodo512
pcre.org/original/doc/html/pcrepattern.html#SEC2
Unicode property support

Another special sequence that may appear at the start of a pattern is (*UCP). This has the same effect as setting the PCRE_UCP option: it causes sequences such as \d and \w to use Unicode properties to determine character types, instead of recognizing only characters with codes less than 128 via a lookup table.

Чтобы \w совпадало не только с латиницей нужно добавить (*UCP).

(*UCP)\w+

5edc399de65ad852879103.png
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev
software engineer
в программе

А что это за программа, и кто писал реализацию регулярок в ней?
К автору и вопросы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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