I need help again with some regular expressions I'm trying to do (still under heavy learning).
Again I'm trying to learn by parsing user agents. Trying to do Firefox now...
Take in consideration these UAs:
- Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.15) Gecko/2009101601 Firefox 2.1 (.NET CLR 3.5.30729)
- Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.20) Gecko/20081217 Firefox(2.0.0.20)
- Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.1b3;MEGAUPLOAD 1.0 (.NET CLR 3.5.30729)
- Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.3a3pre) Gecko/20100306 Firefox3.6 (.NET CLR 3.5.30729)
- Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081202 Firefox (Debian-2.0.0.19-0etch1)
- Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729)
- Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.13) Gecko/20080313 Firefox
I'm trying to do a regular expression that will extract the Firefox version out of the UA.
Here are the rules I want:
- The version is always after the "firefox" string ("Firefox" can be in any character case).
- The version string can start either right after a "/" or a space or with a "(" or even without anything.
- The version string ends by a whitespace or the end of the string or by closing parenthesis or a semicolon.
- In some rare cases the version isn't provided (see last UA). The regexp must match but return an empty string as version (if possible).
I think thats it. If anyone can help it would be great!