sre_parse

    
      
diff --git a/pythonetc/README.md b/pythonetc/README.md
index 25f14f7..e575572 100644
--- a/pythonetc/README.md
+++ b/pythonetc/README.md
@@ -99,6 +99,7 @@ More:
 1. ./sqlite3.md
 1. ./str-chain.md
 1. ./json-allow-nan.md
+1. ./sre-parse.md
 
 Out of order:
 
@@ -131,7 +132,8 @@ Lookup error
 Make your own exceptions
 When to use is
 In uses hash, not eq
-sre_parse
 super()
 gc
 trace
+atexit
+Lazy annotations hype
diff --git a/pythonetc/exc-info.md b/pythonetc/exc-info.md
index a9d36c8..7025696 100644
--- a/pythonetc/exc-info.md
+++ b/pythonetc/exc-info.md
@@ -1,10 +1,5 @@
-
-
-`exc_info`
-
 When something fails, usually you want to log it. Let's have a look at a small toy example:
 
-
 ```python
 from logging import getLogger
 
diff --git a/pythonetc/sre-parse.md b/pythonetc/sre-parse.md
new file mode 100644
index 0000000..e19b30e
--- /dev/null
+++ b/pythonetc/sre-parse.md
@@ -0,0 +1,25 @@
+Internally, the module [re](https://docs.python.org/3/library/re.html) uses 2 undocumented libraries:
+
++ `sre_parse` to parse regular expressions into an abstract syntax tree.
++ `sre_compile` to compile parsed expression.
+
+The first one can be used to see how a regexp was parsed by Python. There are many better tools and services (like [regex101.com](https://regex101.com/)) to debug regular expressions but this one is already in the stdlib.
+
+```python
+>>> sre_parse.parse(r'([Pp]ython)\s?etc').dump()
+SUBPATTERN 1 0 0
+  IN
+    LITERAL 80
+    LITERAL 112
+  LITERAL 121
+  LITERAL 116
+  LITERAL 104
+  LITERAL 111
+  LITERAL 110
+MAX_REPEAT 0 1
+  IN
+    CATEGORY CATEGORY_SPACE
+LITERAL 101
+LITERAL 116
+LITERAL 99
+```