О, ещё чо написал:
Теги:
/(?:<!--([\s\S]*?)-->)|(?:<!\[CDATA\[([\s\S]*?)\]\]>)|(?:<\/\s*([a-z\-_]+)(?::([a-z\-_]+))?\s*>)|(?:<\s*([a-z\-_]+)(?::([a-z\-_]+))?((?:\s*[a-z\-_]+(?::[a-z\-_]+)?\s*(?:=\s*(?:(?:"[^"]*")|(?:'[^']*')))?)*)\s*(\/)?>)/gi
Атрибуты:
/(?:\s*([a-z\-_]+)(?::([a-z\-_]+))?\s*(?:=\s*(?:(?:"([^"]*)")|(?:'[^']*')))?)*/gi
Это для HTML. Корректно отрабатывает, например, такой код:
<nts:as asd asd:as=" ' asd:fake_attr " asd:as = ' " asd:fake_attr ' />
Вообще сказать, везде пишут что парсинг HTML-кода регулярками великое зло, в том числе на stack overflow и хабре. Может потому что не справились?...
Если кто найдет ошибку - дайте знать