'''AntiPattern Name''': Parsing HTML with regular expressions
'''Type''': Development
'''Problem''': Extracting information from HTML text, such as elements or groups of elements with a specific property.
'''Context''': Programmer understands how to use regular expressions and sees that HTML looks fairly regular and easy to parse using this tool.
'''Causes''':
* Using a formated page as a data source instead of seeking a proper data source.
* Not having taken a formal class in parser construction.
* Not reading the formal HTML specification.
'''Supposed Solution''': Write a half-baked regular expression that works for specific test cases.
'''Resulting Context''': Regular expression may work for most cases, but fails on oddly structured but valid HTML or broken HTML, both of which are all-too-common on the Wild Wild Web.
'''Common Resulting problems''':
* The parser breaks if the HTML code is changed at all.
* HTML code remaining in the parsed result.
* Inability to cope with tricky nestling structures.
* Failure to correctly decode entities.
'''RefactoredSolution''':
Find a data source that was designed to be used as a data source. Alternatively, use an existing parser of the correct complexity.
----
See also: ParsingHtml, http://stackoverflow.com/a/1732454/699224 for another take on this anti-pattern
----
CategoryDevelopmentAntiPattern