I'm trying to determine the user-agent from the UAS string (from an Apache header) with regular expressions kept in a MySQL database; if it doesn't match, it gets a crappy default. So I'm seeing a lot of mis-matched UAs with the crappy default, but when I try the re from the database against the mis-matched UA in a noddy script containing just the re and UAS (but which isn't a whole lot different to the real code, except for the fact that my noddy script uses a Perl literal string for UAS), it matches. In "real life", with the UAS extracted from the header record, it (sometimes) fails. Has anyone seen this before? And why does it happen?