diff --git a/bin/generate_html.sh b/bin/generate_html.sh
index 842a24d..710b220 100644
--- a/bin/generate_html.sh
+++ b/bin/generate_html.sh
@@ -23,12 +23,7 @@ for file in ./src/*.md; do
_TITLE=$(grep -m1 "^# " "$file" | sed -r 's/# //')
# [foo](foo.md) -> [foo](foo.html)
- # sed -i -r 's/(\[.*?\])\((.*?)\.md\)/\1(\2.html)/' "$file"
- # sed does not support non-greedy (.*?) like perl, we have to hack it
- sed -i -r \
- -e ':loop' \
- -e 's/(\[.*\])\((.*)\.md\)/\1(\2.html)/g' \
- -e 't loop' $file
+ sed -i -E 's/(\[[^)]*\])\((([^.]*\.)*)md\)/\1(\2html)/g' $file
pandoc -s \
-f gfm+gfm_auto_identifiers-ascii_identifiers \