diff --git a/twitterwidgets.py b/twitterwidgets.py
index 7fb615d..3323f34 100644
--- a/twitterwidgets.py
+++ b/twitterwidgets.py
@@ -470,16 +470,20 @@ class TweetBox(gtk.HBox):
else:
self.user_button.set_label(name + " (" + user.screen_name + ") ")
- # and the text
+ ### and the text
new_text = status.text
- new_text = re.sub(r'&([^;]*?)( |$)', r'&\1\2', new_text)
- new_text = re.sub(r'"([^;]*?)( |$)', r'"\1\2', new_text)
+
+ # Clean up odd characters in the text
+ new_text = re.sub(r'&(?=[^;]*?( |&|$))', r'&', new_text)
+ new_text = re.sub(r'"(?=[^;]*?( |"|$))', r'"', new_text)
+
if gtk.gtk_version[0] > 2 or (gtk.gtk_version[0] == 2 and gtk.gtk_version[1] >= 18):
# Make URLs into links
- new_text = re.sub(r"(http://.*?)([^0-9a-zA-Z.~/_?=&-]|$)", r'\1\2', new_text)
+ new_text = re.sub(r"(http://.*?)(?=[^0-9a-zA-Z.~/_?=&;-]|$)", r'\1', new_text)
# Make @ or # refs into links, to be used internally
new_text = re.sub(r'@(.*?)([^0-9a-zA-Z_]|$)', self._make_user_link, new_text)
new_text = re.sub(r'#(.*?)([ ;,.:*]|$)', self._make_hashtag_link, new_text)
+
self.text.set_markup(new_text)
# If this is in reply to something, set appropriate label