Регулярное выражение пользовательского агента

Я почти стесняюсь спросить, но почти. У меня есть выражение, которое уже работает, но похоже, что оно работает только в var инструменты регулярных выражений, такие как Regulator или онлайн-инструменты. Попав в мой код C #, он не попадает туда, куда должен.

Итак, проблема в том, что мне нужно, чтобы регулярное выражение попадало в строки пользовательского агента, содержащие «android», «iphone» или «ipod», но не те, которые также содержат "опера". Достаточно просто, не так ли?

Пока что у меня есть следующее:

^(?=.*?\b(android|iphone|ipod)\b)(?!opera).*$

Я использую следующие параметры

RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.Singleline

Скажите, пожалуйста, где я ошибся.

Вот несколько строк пользовательского агента. Выражение должно запускаться первым и последним, игнорируя два в середине:

Mozilla/5.0+(Linux;+U;+Android+2.2;+nb-no;+Nexus+One+Build/FRF91)+AppleWebKit/533.1+(KHTML,+like Gecko)+Version/4.0+Mobile+Safari/533.1
Opera/9.80 (Android; Linux; Opera Mobi/ADR-1012221546; U; pl) Presto/2.7.60 Version/10.5
Opera/9.80 (J2ME/iPhone;Opera Mini/5.0.019802/886; U; ja)Presto/2.4.15
Mozila/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Geckto) Version/3.0 Mobile/3A101a Safari/419.3

Спасибо

5
задан danijels 24 June 2011 в 08:39
поделиться