-<!doctype html><html lang=en><head><meta content="IE=edge" http-equiv=X-UA-Compatible><meta content="text/html; charset=utf-8" http-equiv=content-type><meta content="width=device-width,initial-scale=1.0,maximum-scale=1" name=viewport><title>Python Regex Surprises</title><link href=https://learnbyexample.github.io/atom.xml rel=alternate title=RSS type=application/atom+xml><script src=https://cdnjs.cloudflare.com/ajax/libs/slideout/1.0.1/slideout.min.js></script><link href=https://learnbyexample.github.io/site.css rel=stylesheet><meta content="Python Regex Surprises" property=og:title><meta content=website property=og:type><meta property=og:description><meta content=https://learnbyexample.github.io/python-regex-surprises/ property=og:url><meta content=https://learnbyexample.github.io/images/python_regex_surprises.png property=og:image><meta content=1280 property=og:image:width><meta content=640 property=og:image:height><meta content=summary_large_image property=twitter:card><meta content=@learn_byexample property=twitter:site><link href=https://learnbyexample.github.io/favicon.svg rel=icon><link rel="shortcut icon" href=https://learnbyexample.github.io/favicon.png><body><div class=container><div class=mobile-navbar id=mobile-navbar><div class=mobile-header-logo><a class=logo href=/>learnbyexample</a></div><div class="mobile-navbar-icon icon-out"><span></span><span></span><span></span></div></div><nav class="mobile-menu slideout-menu slideout-menu-left" id=mobile-menu><ul class=mobile-menu-list><li class=mobile-menu-item><a href=https://learnbyexample.github.io/books> Books </a><li class=mobile-menu-item><a href=https://learnbyexample.github.io/mini> Mini </a><li class=mobile-menu-item><a href=https://learnbyexample.github.io/tips> Tips </a><li class=mobile-menu-item><a href=https://learnbyexample.github.io/tags> Tags </a><li class=mobile-menu-item><a href=https://learnbyexample.github.io/about> About </a></ul></nav><header id=header><div class=logo><a href=https://learnbyexample.github.io>learnbyexample</a></div><nav class=menu><ul><li><a href=https://learnbyexample.github.io/books> Books </a><li><a href=https://learnbyexample.github.io/mini> Mini </a><li><a href=https://learnbyexample.github.io/tips> Tips </a><li><a href=https://learnbyexample.github.io/tags> Tags </a><li><a href=https://learnbyexample.github.io/about> About </a></ul></nav></header><main><div class=content id=mobile-panel><div class=post-toc id=post-toc><h2 class=post-toc-title>Contents</h2><div class="post-toc-content always-active"><nav id=TableOfContents><ul><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#vs-z>$ vs \Z</a><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#slicing-vs-start-and-end-arguments>Slicing vs start and end arguments</a><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#do-and-match-after-the-last-newline>Do ^ and $ match after the last newline?</a><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#word-boundary-vs-lookarounds>Word boundary vs lookarounds</a><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#undefined-escape-sequences>Undefined escape sequences</a><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#using-octal-and-hexadecimal-escapes-in-the-replacement-section>Using octal and hexadecimal escapes in the replacement section</a><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#using-escape-sequences-for-metacharacters>Using escape sequences for metacharacters</a><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#empty-matches>Empty matches</a><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#can-quantifiers-be-grouped-out>Can quantifiers be grouped out?</a><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#portion-captured-by-a-quantified-group>Portion captured by a quantified group</a><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#character-combinations>Character combinations</a><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#greedy-vs-possessive>Greedy vs Possessive</a><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#optional-flags-argument>Optional flags argument</a><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#re-vs-regex-module-flags>re vs regex module flags</a><li><a class=toc-link href=https://learnbyexample.github.io/python-regex-surprises/#understanding-python-re-gex-book>Understanding Python re(gex)? book</a></ul></nav></div></div><article class=post><header class=post__header><h1 class=post__title><a href=https://learnbyexample.github.io/python-regex-surprises/>Python Regex Surprises</a></h1><div class=post__meta><span class=post__time>2023-01-21</span></div></header><div class=post-content><p>In this post, you'll find a few regular expression examples that might surprise you. Some are Python specific and some are applicable to other regex flavors as well. To make it more interesting, these are framed as questions for you to ponder upon. Answers are hidden by default.<p align=center><img alt="Python Regex Surprises" src=/images/python_regex_surprises.png><p align=center><i>Poster created using <a href=https://www.canva.com/>Canva</a></i><p><img alt=info src=/images/info.svg> If you are not familiar with regular expressions, check out my <a href=https://github.com/learnbyexample/py_regular_expressions>Understanding Python re(gex)?</a> ebook.</p><span id=continue-reading></span><br><h2 id=vs-z>$ vs \Z<a aria-label="Anchor link for: vs-z" class=zola-anchor href=#vs-z>🔗</a></h2><p>Are the <code>$</code> and <code>\Z</code> anchors equivalent?<details><summary><i style=color:gray>Click to view answer</i></summary> <p><code>$</code> can match both the end of string and just before <code>\n</code> if it is the last character. <code>\Z</code> will only match the end of string.</p> <pre class=language-python data-lang=python style=background-color:#f5f5f5;color:#1f1f1f;><code class=language-python data-lang=python><span style=color:#72ab00;>>>> </span><span>greeting </span><span style=color:#72ab00;>= </span><span style=color:#d07711;>'hi there</span><span style=color:#aeb52b;>\n</span><span style=color:#d07711;>have a nice day</span><span style=color:#aeb52b;>\n</span><span style=color:#d07711;>'
0 commit comments