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)
谢谢
您是否记得在模式字符串前添加"@"?如果不是,"\ b"将被解释为退格.
还有一些人说,你不是在任何地方检查Opera,而是在行的开头,这是故意的吗?我可能会使用这种语法:
@"^(?!opera)(?=.*\b(android|iphone|ipod)\b).*$"
| 归档时间: |
|
| 查看次数: |
3740 次 |
| 最近记录: |