2014-08-06 2 views
-1

Что означает это регулярное выражение? Я знаю, что функциональность re.sub, но не в состоянии выяснить, 2-й части:Объяснение регулярного выражения

s = re.sub(r'\.([a-zA-Z])', r'. \1', s) 
          ^^^^^^^ 

Может кто-нибудь объяснить мне подчеркнутую часть?

+0

См [ССЫЛКА: Что же это регулярное выражение означает] (http://stackoverflow.com/questions/22937618/reference-what-does-this-regex-mean) – Unihedron

ответ

1

В следующий раз вы должны указать, какой язык программирования вы используете, поскольку синтаксисы регулярных выражений сильно отличаются от одного языка к другому. Кроме того, при использовании регулярных выражений для замены чего-то обычно второй аргумент не является регулярным выражением, а просто строкой со специальным синтаксисом, поэтому знание языка программирования также поможет в этом.

\1 - это обратная ссылка на то, что соответствует первой группе захвата (выражение в круглых скобках).

Таким образом, \.([a-zA-Z]) соответствует периоду, за которым следует буква, и эта буква фиксируется (сохраняется/сохраняется/запоминается), поскольку она окружена круглыми скобками и используется в месте \1. Затем период и буква заменяются периодом, пробелом и буквой.

Примеры:

.H становится . H.

This.is.a.Test становится This. is. a. Test

+0

@Unihedron точка в регулярном выражении (первый аргумент) сбежала, о чем я говорил в своем третьем абзаце. Второй аргумент не должен быть регулярным выражением, поэтому период не должен быть экранирован. Я не уверен, на каком языке это (я предполагаю, что префикс 'r' является синтаксисом для литерала регулярного выражения), но я никогда не встречал его, который использует регулярное выражение в качестве аргумента замены метода replace, поэтому либо ОП совершил ошибку там, либо так работает этот язык программирования (или этот метод). – RoToRa

Смежные вопросы