用户代理正则表达式

dan*_*els 5 c# regex user-agent

我几乎不好意思问,但差不多.我似乎有一个已经有效的表达式,但它似乎只适用于各种正则表达式工具,如Regulator或在线工具.一旦进入我的C#代码,它就无法达到应有的位置.

所以问题是我需要正则表达式来命中包含"android","iphone"或"ipod"的用户代理字符串,而不是那些也包含"opera"的用户代理字符串.很简单吧?

到目前为止,我有这个:

^(?=.*?\b(android|iphone|ipod)\b)(?!opera).*$
Run Code Online (Sandbox Code Playgroud)

我正在使用以下选项

RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.Singleline
Run Code Online (Sandbox Code Playgroud)

请告诉我哪里弄错了.

以下是一些用户代理字符串.表达式应该在第一个和最后一个触发,而忽略中间的两个:

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
Run Code Online (Sandbox Code Playgroud)

谢谢

Joh*_*dal 5

您是否记得在模式字符串前添加"@"?如果不是,"\ b"将被解释为退格.

还有一些人说,你不是在任何地方检查Opera,而是在行的开头,这是故意的吗?我可能会使用这种语法:
@"^(?!opera)(?=.*\b(android|iphone|ipod)\b).*$"