|
293 | 293 | "source": [
|
294 | 294 | "## Некоторые объяснения про регулярные выражения\n",
|
295 | 295 | "\n",
|
296 |
| - "* Что такое `re.compile`? <br>\n", |
| 296 | + "* Что такое `re.compile`? <br><br>\n", |
297 | 297 | "Грубо говоря, `compile()` позволяет запомнить регулярное выражение и использовать его несколько раз. Суть в том, что перед тем как прогнать регулярку через строку, питон должен ее \"скомпилировать\" - превратить **строку** с регулярным выражением в специальный **объект**.<br>\n",
|
298 | 298 | "Строчка `re.search(..., ...)` сначала компилирует регулярное выражение, а потом выполняет поиск. Если нужно поискать что-то один раз, то такая строчка очень удобна. А если нужно поискать что-то много раз, то получится что одно и то же выражение мы компилируем много раз. А хочется один раз скомпилировать и потом много раз пользоваться. Поэтому пишут так:<br><br>\n",
|
299 | 299 | "`text = 'тут текст, внутри которого мы что-то ищем'<br>\n",
|
|
303 | 303 | "toSub = regName.sub('на.что.заменить', text) # и так тоже можно использовать`<br><br>\n",
|
304 | 304 | "\n",
|
305 | 305 | "* Что делает `regName.sub(..., ...)`?<br><br>\n",
|
306 |
| - "Выражение `regName.sub('на_что_заменить', text)` значит: возьми скомпилированное выражение из переменной `regName`, и замени все, что соответствует этому выражению в переменной `text`, на строку `'на_что_заменить'`. Если первый аргумент в этом случае - пустая строка, то все найденные регуляркой куски заменятся на пустую строку, короче говоря, удалятся.\n", |
| 306 | + "Выражение `regName.sub('на_что_заменить', text)` значит: возьми скомпилированное выражение из переменной `regName`, и замени все, что соответствует этому выражению в переменной `text`, на строку `'на_что_заменить'`. Если первый аргумент в этом случае - пустая строка, то все найденные регуляркой куски заменятся на пустую строку, короче говоря, удалятся.<br><br>\n", |
307 | 307 | "\n",
|
308 | 308 | "* Что такое `re.DOTALL`?<br><br>\n",
|
309 |
| - "Обычно точка в регулярном выражении означает любой символ КРОМЕ символа новой строки. Чтобы изменить такое поведение, в компиляцию регулярки можно добавить параметры-флаги вот так: `flags = re.DOTALL`, и тогда точка будет ловить вообще любой символ, включая новую строку. Эти флаги слегка меняют поведение функции, вот и все.\n", |
| 309 | + "Обычно точка в регулярном выражении означает любой символ КРОМЕ символа новой строки. Чтобы изменить такое поведение, в компиляцию регулярки можно добавить параметры-флаги вот так: `flags = re.DOTALL`, и тогда точка будет ловить вообще любой символ, включая новую строку. Эти флаги слегка меняют поведение функции, вот и все.<br><br>\n", |
310 | 310 | "\n",
|
311 | 311 | "* Что такое `re.U`?<br><br>\n",
|
312 | 312 | "U я написала зря, потому что я обычно пишу на втором питоне: во втором питоне по умолчанию выражения типа `\\w`, `\\W`, `\\s` и подобные работают только на строках ASCII, и чтобы они работали на юникодных строках нужно написать re.U. В третьем питоне все строки и так юникодные, поэтому необходимости в таком флаге больше нет. Но если вдруг вам придется использовать регулярки из второго питона, запомните про такую штуку.\n"
|
|
0 commit comments