What is the difference between exact version matching and rough version matching in the script?
Exact version matching uses `stripped_strings` to find an exact build number (e.g., `15.2.986.26`) within a `<tr>`, returning only the corresponding row. Rough version matching uses `tag.text` to check if a partial version (e.g., `15.2.986`) appears anywhere in the row, returning multiple matching entries—useful for older Exchange versions that may not have unique full build numbers. Both methods are detailed in the article's test code.
version matchingexact matchrough matchExchange enumerationpenetration testing