mimmi20/browscap-helper

View on GitHub
data/regexes.yaml

Summary

Maintainability
Test Coverage
regexes:
    ####################################################################################################################
    # Windows Phone
    # Edge Mobile
    - '/(?P<osname>Windows Phone) ?(?P<osversion>[\d\.]*\d+); Android [\d.]+; (?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?;?[ _\-]*(?P<devicecode>[^;\)]+)(?:[^\)]+)?\) AppleWebKit\/[\d\.]+\d+ \(KHTML, like Gecko\) Chrome\/(?P<chromeversion>[\d.+]+) (?P<devicetype>Mobile|TV)? ?Safari\/[\d.+]+/i'
    # IE Mobile 11
    - '/(?P<devicetype>Mobile)?;? ?(?P<osname>Windows Phone(?: OS)?) ?(?P<osversion>[\d\.]*\d+); .*(?P<enginename>Trident)\/(?P<engineversion>[\d\.\+ab]+\d+); Touch; rv:([\d\.]+\d+); (.*)?(?P<browsername>IEMobile)\/(?P<browserversion>[\d\.\+ab]+\d+);? ?(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?;?[ _\-]*(?P<devicecode>[^;\)]+)?/i'
    # IE Mobile 11 (Desktop Mode)
    - '/(?P<devicetype>WPDesktop);? ?(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?;?[ _\-]*(?P<devicecode>[^;\)]+)?/i'
    # IE Mobile 6-10
    - '/(?P<osname>Windows Phone(?: OS)?) ?(?P<osversion>[\d\.]*\d+); (?P<enginename>Trident)?\/?(?P<engineversion>[\d\.\+ab]+\d+)?; (?P<browsername>IEMobile)\/(?P<browserversion>[\d\.\+ab]+\d+)(?:; ARM)?(; Touch)?;? ?(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?;?[ _\-]*(?P<devicecode>[^;\)]+)?/i'
    # IE Mobile 6-10 (Desktop Mode)
    - '/(?P<devicetype>WPDesktop|XBLWP7);? ?(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?;?[ _\-]*(?P<devicecode>[^;\)]+)?/i'
    # Opera Mini (old)
    - '/(?P<devicecode>Opera\/9\.[58]0) ?\((?P<osname>Windows Mobile|Windows Phone) ?(?P<osversion>[\d\.]*\d+)?; ? ?(?P<browsername>Opera Mini)\/(?P<browserversion>[\d\.\+ab]+\d+).*\) (?P<enginename>Presto)\/(?P<engineversion>[\d\.\+ab]+\d+)/i'
    ####################################################################################################################
    # Android OS
    - '/Linux; ?(?P<osname>Android)[ -\/]?(?P<osversion>[\d\.]*\d+);? ?(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?[ _\-]*(?P<devicecode>[a-zA-Z0-9\-\(\)\/\.\+_# ]+) Build\//i'
    - '/Linux; ?(?P<osname>Android)[ -\/]?(?P<osversion>[\d\.]*\d+);? ?(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?[ _\-]*(?P<devicecode>[a-zA-Z0-9\-\(\)\.\+_#]+)\//i'
    # Desktop Mode
    - '/(?P<osname>Linux); ?(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?[ _\-]*(?P<devicecode>[a-zA-Z0-9\-\(\)\/\.\+_# ]+) Build\//i'
    - '/(?P<osname>Linux); ?(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?[ _\-]*(?P<devicecode>[a-zA-Z0-9\-\(\)\.\+_#]+)\//i'
    - '/^(?P<browsername>Dalvik)\/(?P<browserversion>[\d\.\+ab]+\d+) ?\(Linux; ?(?P<osname>Android)[ -]?(?P<osversion>[\d\.]*\d+);? ?(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?[ _\-]*(?P<devicecode>[a-zA-Z0-9\-\(\)\/\.\+_# ]+)/i'
    - '/^Dalvik\/[\d.+ab]+ ?\(Linux; ?(?P<devicecode>Android)/i'
    # Opera
    - '/^Opera\/[\d\.]+\d+ ?\((?P<devicecode>Android)/i'
    # UCBrowser
    - '/^UCWEB\/[\d\.]+\d+ ?\((?P<osname>Linux); Opera Mini\/[^;]+;? ?(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?[ _\-]*(?P<devicecode>[a-zA-Z0-9\-\(\)\/\.\+_# ]+) Build\/(?:[^\)]+)?\) (?P<enginename>U2)\/(?P<engineversion>[\d\.\+ab]+\d+) (?P<browsername>UCBrowser)\/(?P<browserversion>[\d\.\+ab]+\d+) Mobile/i'
    - '/^JUC ?\(Linux; ?(?P<osname>Android)[ -]?(?P<osversion>[\d\.]*\d+)?;?;?(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?[ _\-]*(?P<devicecode>[a-zA-Z0-9\-\(\)\/\.\+_# ]+)(?:[^\)]+)?\) ?(?P<browsername>UCWEB)(?P<browserversion>[\d\.\+ab]+\d+)/i'
    - '/^JUC ?\(Linux; ?(?P<osversion>[\d\.]*\d+)?;?;?(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?[ _\-]*(?P<devicecode>[a-zA-Z0-9\-\(\)\/\.\+_# ]+)(?:[^\)]+)?\) ?(?P<browsername>UCWEB)(?P<browserversion>[\d\.\+ab]+\d+)/i'
    - '/^UCWEB\/[\d\.]+\d+ ?\((?:Linux|MIDP\-2\.0); (?P<osname>Adr) ?(?P<osversion>[\d\.]*\d+)?; (?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?[ _\-]*(?P<devicecode>[a-zA-Z0-9\-\(\)\/\.\+_# ]+)(?:[^\)]+)?\) (?P<enginename>U2)\/(?P<engineversion>[\d\.\+ab]+\d+) (?P<browsername>UCBrowser)\/(?P<browserversion>[\d\.\+ab]+\d+) U2\/[\d.+]+ (?P<devicetype>Mobile)/i'
    # MQQBrowser (Safari based)
    - '/^(?P<browsername>MQQBrowser)\/(?P<browserversion>[\d\.\+ab]+\d+)\/Mozilla\/[\d\.]+\d+ ?\(Linux; ?(?P<osname>Android)[ -]?(?P<osversion>[\d\.]*\d+);? ?(?P<devicecode>[a-zA-Z0-9\-\(\)\/\.\+_# ]+) Build\/(?:[^\)]+)?\) ?(?P<enginename>AppleWebKit)\/?(?P<engineversion>[\d\.\+ab]+\d+) ?\(KHTML, like Gecko\) *Version\/([\d\.]+\d+) (?P<devicetype>Mobile|TV)? ?(.*)(Safari)\/([\d\.]+\d+)/i'
    - '/(?P<osname>Linux).*(?P<browsername>Puffin)\/(?P<browserversion>[\d\.\+ab]+\d+)(?P<devicecode>A[PT])/i'
    # Opera Mini (old)
    - '/(?P<devicecode>Opera\/9\.[58]0) ?\((?P<osname>MAUI Runtime|SpreadTrum|VRE) ?(?P<osversion>[\d\.]*\d+)?; ? ?(?P<browsername>Opera Mini)\/(?P<browserversion>[\d\.\+ab]+\d+).*\) (?P<enginename>Presto)\/(?P<engineversion>[\d\.\+ab]+\d+)/i'
    # Firefox + Gecko-based
    - '/(?P<devicecode>Android)[ -\/]?(?P<osversion>[\d\.]*\d+)?;?(?: (?P<devicetype>Mobile|Tablet)?;)? rv:(?P<engineversion>[\d\.\+ab]+\d+)\)/i'
    # without device code
    - '/(?P<devicecode>Android)[ -\/]?(?P<osversion>[\d\.]*\d+)?\).*(?P<devicetype>Mobile|TV) ?Safari/i'
    - '/Linux; ?(?P<devicecode>Android)[ -\/]?(?P<osversion>[\d\.]*\d+)?;?(?: ?Build\/?|(?:\w{2}-\w{2};)?\))/i'
    - '/(?P<devicecode>Android)[ -\/]?(?P<osversion>[\d\.]*\d+)?;? ?Linux;?/i'
    - '/(?P<devicecode>Android)[ -\/]?(?P<osversion>[\d\.]*\d+)\)/i'
    ####################################################################################################################
    # iOS
    # Chrome
    - '/(?P<devicecode>iPhone|iPad|iPod( Touch)?); (?P<osname>CPU iPhone OS|CPU OS) ?(?P<osversion>[\d._]+) like Mac OS X(?:[^\)]+)?\) (?P<enginename>AppleWebKit)\/(?P<engineversion>[\d\.\+ab]+\d+) \(KHTML, like Gecko\)/i'
    - '/(?P<osname>Linux).*(?P<browsername>Puffin)\/(?P<browserversion>[\d\.\+ab]+\d+)(?P<devicecode>I[PT])/i'
    ####################################################################################################################
    # Windows
    - '/(?P<devicecode>Windows)?;? ?(?P<osname>Windows NT(?: [\d\.]+\d+)?(?:; ARM)?)(?:; (WOW64|Win64; x64))?(?:[^\)]+)?/i'
    # IE 6-10
    - '/(?P<osname>Windows NT(?: [\d\.]+\d+)?(?:; ARM)?)(?:; (WOW64|Win64; x64))?([^\);]+)?; (?P<enginename>Trident)?\/?(?P<engineversion>[\d\.\+ab]+\d+)?(?:[^\)]+)?\)?/i'
    # Thunderbird
    - '/(?P<devicecode>Windows)?(X11)?;? ?(?P<osname>Windows NT(?: [\d\.]+\d+)?(?:; ARM)?)(?:; (WOW64|Win64; x64))?(?:[^\)]+)?;? rv:(?P<engineversion>[\d\.\+ab]+\d+)(?:[^\)]+)?\) ?(?P<enginename>Gecko)(\/[\d\.]+\d+)? (?P<browsername>Thunderbird)\/(?P<browserversion>[\d\.\+ab]+\d+)/i'
    # Songbird
    - '/(?P<devicecode>Windows)?(X11)?;? ?(?P<osname>Windows NT(?: [\d\.]+\d+)?(?:; ARM)?)(?:; (WOW64|Win64; x64))?(?:[^\)]+)?;? rv:(?P<engineversion>[\d\.\+ab]+\d+)(?:[^\)]+)?\) ?(?P<enginename>Gecko)(\/[\d\.]+\d+)? (?P<browsername>Songbird)\/(?P<browserversion>[\d\.\+ab]+\d+)/i'
    # Opera (old)
    - '/^(?P<browsername>Opera)\/[\d\.]+\d+ ?\((?P<osname>Windows NT(?: [\d\.]+\d+)?(?:; ARM)?)(?:; (WOW64|Win64; x64))?(?:[^\)]+)?(?:[^\)]+)?\) (?P<enginename>Presto)\/(?P<engineversion>[\d\.\+ab]+\d+) Version\/(?P<browserversion>[\d\.\+ab]+\d+)/i'
    # Outlook-Express
    - '/^(?P<browsername>Outlook\-Express)\/(?P<browserversion>[\d\.]+\d+) ?\((?:MSIE [\d\.]+\d+)?;? ?(?P<osname>Windows NT(?: [\d\.]+\d+)?(?:; ARM)?)(?:; (WOW64|Win64; x64))?(?:[^\)]+)?(?:[^\)]+)?\) (?P<enginename>Trident)?\/?(?P<engineversion>[\d\.\+ab]+\d+)?/i'
    - '/^(?P<browsername>Outlook\-Express)\/(?P<browserversion>[\d\.]+\d+) ?\((?:MSIE [\d\.]+\d+)?;? ?(?P<osname>Windows NT(?: [\d\.]+\d+)?(?:; ARM)?)(?:; (WOW64|Win64; x64))?;? ?(?P<enginename>Trident)?\/?(?P<engineversion>[\d\.\+ab]+\d+)?/i'
    ####################################################################################################################
    # macOS
    - '/(?P<devicecode>Macintosh); ?(PPC|Intel) (?P<osname>Mac OS X) ?(?P<osversion>[\d._]+)?/i'
    ####################################################################################################################
    # Darwin
    - '/CFNetwork\/(?P<engineversion>[\d\.\+ab]+\d+) (?P<osname>Darwin)\/(?P<osversion>[\d._]+)( \((?P<osbits>x86_64|i386|i686 on x86_64)\))?( \((?P<devicecode>[^\)]+)\))?/i'
    - '/(?P<devicecode>CFNetwork)\/(?P<engineversion>[\d\.\+ab]+\d+) (?P<osname>Darwin)\/(?P<osversion>[\d._]+)( \((?P<osbits>x86_64|i386|i686 on x86_64)\))/i'
    ####################################################################################################################
    # Chrome OS
    - '/(?P<devicecode>CrOS) ?(?:i386|i686|i686 on x86_64|x86_64|sparc64)?(?:[^\)]+)?\)/i'
    ####################################################################################################################
    # Linux
    - '/(?P<devicecode>philipstv)/i'
    - '/(?P<devicecode>linux arm)/i'
    - '/(?P<devicecode>linux)/i'
    ####################################################################################################################
    # Tizen
    # Samsung Browser (Safari based)
    - '/Linux; (?P<osname>Tizen) (?P<osversion>[\d._]+)(;(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?[ _\-]*(?P<devicecode>[a-zA-Z0-9\-\(\)\/\.\+_# ]+))?\) ?(?P<enginename>AppleWebKit)\/?(?P<engineversion>[\d\.\+ab]+\d+) ?\(KHTML, like Gecko\) *(?P<browsername>SamsungBrowser)\/(?P<browserversion>[\d\.\+ab]+\d+) (?P<devicetype>Mobile|TV)? ?(Safari)\/([\d\.]+\d+)/i'
    - '/(?P<osname>Tizen) (?P<osversion>[\d._]+)(;(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?[ _\-]*(?P<devicecode>[a-zA-Z0-9\-\(\)\/\.\+_# ]+))/i'
    # Opera Mini (old)
    - '/(?P<devicecode>Opera\/9\.[58]0) ?\((?P<osname>Tizen) ?(?P<osversion>[\d\.]*\d+)?; ? ?(?P<browsername>Opera Mini)\/(?P<browserversion>[\d\.\+ab]+\d+).*\) (?P<enginename>Presto)\/(?P<engineversion>[\d\.\+ab]+\d+)/i'
    ####################################################################################################################
    # FreeBSD
    # Kazehakase
    - '/(?P<osname>FreeBSD) ?(?:i386|i686|i686 on x86_64|x86_64|sparc64)?;? rv:(?P<engineversion>[\d\.\+ab]+\d+)\) ?(?P<enginename>Gecko)(\/[\d\.]+\d+)? (Firefox)\/([\d\.]+\d+) (?P<browsername>Kazehakase)\/(?P<browserversion>[\d\.\+ab]+\d+)/i'
    - '/(?P<osname>FreeBSD) ?(?:i386|i686|i686 on x86_64|x86_64|sparc64)?;? rv:(?P<engineversion>[\d\.\+ab]+\d+)\) ?(?P<enginename>Gecko)(\/[\d\.]+\d+)? (?P<browsername>Kazehakase)\/(?P<browserversion>[\d\.\+ab]+\d+)/i'
    # Firefox
    - '/(?P<osname>FreeBSD) ?(?:i386|i686|i686 on x86_64|x86_64|sparc64)?;? rv:(?P<engineversion>[\d\.\+ab]+\d+)\) ?(?P<enginename>Gecko)(\/[\d\.]+\d+)? (?P<browsername>Firefox)\/(?P<browserversion>[\d\.\+ab]+\d+)/i'
    ####################################################################################################################
    # Blackberry
    - '/(?P<osname>BB10); (?P<devicecode>Kbd|Touch)\) ?(?P<enginename>AppleWebKit)\/?(?P<engineversion>[\d\.\+ab]+\d+) ?\(KHTML, like Gecko\)/i'
    - '/(?P<osname>BlackBerry); (?P<devicecode>[^\)]+)\) ?(?P<enginename>AppleWebKit)\/?(?P<engineversion>[\d\.\+ab]+\d+) ?\(KHTML, like Gecko\) Version\/(?P<browserversion>[\d\.\+ab]+\d+) (?P<devicetype>Mobile|TV)? ?(?P<browsername>Safari)\/([\d\.]+\d+)/i'
    - '/^(?P<manufacturercode>BlackBerry)(?P<devicecode>[^\/]+)\/(?P<osversion>[\d.+]+)/i'
    # Opera Mini (old)
    - '/(?P<devicecode>Opera\/9\.[58]0) ?\((?P<osname>BlackBerry);? ?(?P<browsername>Opera Mini)\/(?P<browserversion>[\d\.\+ab]+\d+).*\) (?P<enginename>Presto)\/(?P<engineversion>[\d\.\+ab]+\d+)/i'
    ####################################################################################################################
    # Nokia (old)
    - '/^(?P<manufacturercode>Nokia)(?P<devicecode>[^\/]+)\/.* Mozilla\/[\d\.]+\d+ ?(?P<enginename>AppleWebKit)\/?(?P<engineversion>[\d\.\+ab]+\d+) ?\(KHTML, like Gecko\) (?P<browsername>Safari)\/(?P<browserversion>[\d\.\+ab]+\d+)/i'
    # BrowserNG
    - '/(?P<osname>Symbian(OS)?)\/(?P<osversion>[\d.+]+); Series60\/[\d.+]+ (?P<manufacturercode>Nokia)(?P<devicecode>[^\/]+)\/[^\)]+\) ?(?P<enginename>AppleWebKit)\/?(?P<engineversion>[\d\.\+ab]+\d+) ?\(KHTML, like Gecko\) Version\/[\d.+]+ (?P<browsername>BrowserNG)\/(?P<browserversion>[\d\.\+ab]+\d+)/i'
    # NokiaBrowser
    - '/(?P<osname>Symbian(OS)?)\/(?P<osversion>[\d.+]+); Series60\/[\d.+]+ (?P<manufacturercode>Nokia)(?P<devicecode>[^\/]+)\/[^\)]+\) ?(?P<enginename>AppleWebKit)\/?(?P<engineversion>[\d\.\+ab]+\d+) ?\(KHTML, like Gecko\) (?P<browsername>NokiaBrowser)\/(?P<browserversion>[\d\.\+ab]+\d+)/i'
    # UCBrowser
    - '/^UCWEB\/[\d\.]+\d+ ?\((?P<osname>Java); MIDP\-2\.0; (?P<manufacturercode>Nokia)(?P<devicecode>[^\/\)]+)\) (?P<enginename>U2)\/(?P<engineversion>[\d\.\+ab]+\d+) (?P<browsername>UCBrowser)\/(?P<browserversion>[\d\.\+ab]+\d+) U2\/[\d.+]+ (?P<devicetype>Mobile)/i'
    - '/^UCWEB\/[\d\.]+\d+ ?\((?P<osname>Symbian(OS)?); .* (?P<manufacturercode>Nokia)(?P<devicecode>[^\/\)]+)\) (?P<enginename>U2)\/(?P<engineversion>[\d\.\+ab]+\d+) (?P<browsername>UCBrowser)\/(?P<browserversion>[\d\.\+ab]+\d+) U2\/[\d.+]+ (?P<devicetype>Mobile)/i'
    - '/^(?P<manufacturercode>Nokia)(?P<devicecode>[^\/]+)\/.* UCWEB\/.* (?P<enginename>U2)\/(?P<engineversion>[\d\.\+ab]+\d+) (?P<browsername>UCBrowser)\/(?P<browserversion>[\d\.\+ab]+\d+) U2\/[\d.+]+ (?P<devicetype>Mobile)/i'
    # Safari
    - '/(?P<osname>Symbian(OS)?)\/(?P<osversion>[\d.+]+); Series60\/[\d.+]+ (?P<manufacturercode>Nokia)(?P<devicecode>[^\/]+)\/[^\)]+\) ?(?P<enginename>AppleWebKit)\/?(?P<engineversion>[\d\.\+ab]+\d+) ?\(KHTML, like Gecko\) (?P<browsername>Safari)\/(?P<browserversion>[\d\.\+ab]+\d+)/i'
    ####################################################################################################################
    # Playstation
    - '/(?P<devicecode>PLAYSTATION (3|4)); [\d.]+\)/i'
    ####################################################################################################################
    # Java based
    # Opera Mini (old)
    - '/(?P<devicecode>Opera\/9\.[58]0) ?\((?P<osname>J2ME\/MIDP);? ?(?P<browsername>Opera Mini)\/(?P<browserversion>[\d.+ab]+\d+).*\) (?P<enginename>Presto)\/(?P<engineversion>[\d\.\+ab]+\d+)/i'
    # UCBrowser
    - '/^UCWEB\/[\d\.]+\d+ ?\((?P<osname>Java); MIDP-2.0;? ?(?P<manufacturercode>htc|nokia|microsoft|samsung|zte|lg|blu|dell|huawei|archos|allview|xbox|lenovo|micromax|gfive|coolpad|odys|phicomm|itel|oysters|kiano|keneksi|pantech|modecom|starway|philips|texet|kazam|cosmote|digma|arnova|asus|hp|thl|sony(?:ericsson)?|panasonic|tecno|intex|infinix|gionee|haier|hisense|hosin|hasee|spv|infocus|fnac|vivo|qmobile|quadro|ngm|kyocera|wileyfox|iberry|inew|inq|i\-mobile|i\-joy|intki|iocean|karbonn|koobee|komu|kingsun|kopo|koridy|k\-?touch|lingwin|meeg|mofut|mlled|meu|noain|motorola|opsson|orange|qilive|senseit|sunvan|tcl|t\-mobile|nuclear|uniscope|voto|ytone|boway|doov|datang|desay)?[ _\-]*(?P<devicecode>[^\)]+)\) (?P<enginename>U2)\/(?P<engineversion>[\d\.\+ab]+\d+) (?P<browsername>UCBrowser)\/(?P<browserversion>[\d\.\+ab]+\d+)( U2\/[\d\.\+ab]+\d+)? Mobile/i'
    ####################################################################################################################
    # Symbian
    # Opera Mini (old)
    - '/(?P<devicecode>Opera\/9\.[58]0) ?\((?P<osname>Series 60) ?(?P<osversion>[\d\.]*\d+)?; ? ?(?P<browsername>Opera Mini)\/(?P<browserversion>[\d\.\+ab]+\d+).*\) (?P<enginename>Presto)\/(?P<engineversion>[\d\.\+ab]+\d+)/i'