Regular Expression Browser UserAgent Parsing

Opera Using the Presto Layout Engine

Opera/9.80 (Windows NT 5.1; U; en) Presto/2.8.131 Version/11.10

(?P<browser>Opera).(?P<browser_version>\d+\.\d+)\W+(?# Fake Opera Version for older browser detection loggers)
\((?P<os>[\w ]+) (?P<os_version>\d[\d.]*).+?(?P<lang>[a-z]{2})\)\W+(?# OS, version, language)
(?P<layout>Presto).(?P<layout_version>\d+\.\d+)\.(\d+)\W+(?# Presto Layout Engine Version and core-integration-point)
(?P<version>Version).(?P<browser_version>\d+\.[\d.]+)(?# Actual version of Opera)

(?P<browser>Opera).(?P<browser_version>\d[\d.]*)\W+\((?P<os>[^\d])(?P<os_version>\d+\.?[\d.]*).+?(?P<lang>[a-z]{2})\)\W+(?P<layout>Presto).(?P<layout_version>\d+\.\d+)\.(\d+)\W+(?P<version>Version).(?P<browser_version>\d[\d.]*)

(?P<browser_info>Opera|Presto|Version).(?P<browser_version>\d+[\d.]*)
\((?P<os_info>[^\d])(?P<os_version>\d[\d.]*)