Я работаю с Czech акцентированным текстом в Python 3.4.
Вызов re.sub()
для выполнения подстановки с помощью regex по ударному предложению работает хорошо, но с использованием регулярного выражения, скомпилированного с re.compile()
, а затем вызывается regex.sub()
.
Вот случай, когда я использую те же аргументы для re.sub()
и regex.sub()
import re
pattern = r'(?<!\*)(Poplatn[ií]\w+ da[nň]\w+)'
flags = re.I|re.L
compiled = re.compile(pattern, flags)
text = 'Poplatníkem daně z pozemků je vlastník pozemku'
mark = r'**\1**' # wrap 1st matching group in double stars
print(re.sub(pattern, mark, text, flags))
# outputs: **Poplatníkem daně** z pozemků je vlastník pozemku
# substitution works
print(compiled.sub(mark, text))
# outputs: Poplatníkem daně z pozemků je vlastník pozemku
# substitution fails
Я считаю, что причина в акцентах, потому что для неадресного предложения re.sub()
и regex.sub()
работает одинаково.
Но мне кажется, что это ошибка, потому что передача тех же аргументов возвращает разные результаты, чего не должно быть. Эта тема осложняется различными платформами и локалями, поэтому она не может быть воспроизводимой в вашей системе. Вот скриншот моей консоли.
Видите ли вы ошибку в моем коде, или я должен сообщать об этом как ошибку?