У меня есть питон скрипт со следующим регулярным выражением, чтобы захватить две строки (которые могут содержать кавычки экранированы) из NSLocalizedString макросов в моем коде:Почему не будет компилироваться это регулярное выражение python?
NSLocalizedString\(@"(?:\\.|[^"\\]*)",\s*@"(?:\\.|[^"\\]*)"\s*\)
Он отлично работает в RegexRx точно соответствует, как ожидалось ...
... однако, когда я пытаюсь добавить его в мой питон скрипт, как это ...
localizedStringComment = re.compile('NSLocalizedString\(@"(?:\\.|[^"\\]*)",\s*@"(?:\\.|[^"\\]*)"\s*\)', re.DOTALL)
... он выдает следующее сообщение ...
Traceback (most recent call last):
File "../../localization_scripts/sr_genstrings.py", line 21, in <module>
localizedStringComment = re.compile('NSLocalizedString\(@"(?:\\.|[^"\\]*)",\s*@"(?:\\.|[^"\\]*)"\s*\)', re.DOTALL)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 190, in compile
return _compile(pattern, flags)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 244, in _compile
raise error, v # invalid expression
sre_constants.error: unexpected end of regular expression
Похоже, что потребности питона дополнительного побега где-то, но я понятия не имею, где. Если добавить дополнительные обратные слэши к последней паре на линии, как это ...
localizedStringComment = re.compile('NSLocalizedString\(@"(?:\\.|[^"\\]*)",\s*@"(?:\\.|[^"\\\\]*)"\s*\)', re.DOTALL)
... он работает без ошибок, но тогда ничего не найдено. Любая помощь оценивается.
Вы слишком быстро ;-) – Ludo