diff --git a/CONTRIBUTORS.rst b/CONTRIBUTORS.rst
index 5d9f94fe..91ff5a95 100644
--- a/CONTRIBUTORS.rst
+++ b/CONTRIBUTORS.rst
@@ -16,6 +16,7 @@ bug report!
* `François Boulogne `_
* `Adrian Damian `_
* `Jason Diamond `_
+* `Vincent Gao `_
* `Jakub Kuczys `_
* `Fazal Majid `_
* `Kevin Marks `_
diff --git a/changelog.d/_6-gaoflow-author-email-redos.rst b/changelog.d/_6-gaoflow-author-email-redos.rst
new file mode 100644
index 00000000..9fe16936
--- /dev/null
+++ b/changelog.d/_6-gaoflow-author-email-redos.rst
@@ -0,0 +1,4 @@
+Fixed
+-----
+
+* Avoid repeated rescans when extracting emails from malformed author values. (#562)
diff --git a/feedparser/mixin.py b/feedparser/mixin.py
index 3acee1b1..d41740a6 100644
--- a/feedparser/mixin.py
+++ b/feedparser/mixin.py
@@ -39,6 +39,7 @@
from .util import FeedParserDict
email_pattern = re.compile(
+ r"(?