首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >括号内的匹配模式

括号内的匹配模式
EN

Stack Overflow用户
提问于 2013-02-07 22:42:36
回答 2查看 69关注 0票数 0

我正在尝试制作一个移动检测类,它应该将用户代理剥离成一个简单的基本字符串,如下所示:

输出: Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (,类似Gecko) Chrome/* Safari/*

由此:

输入:(HTTP_USER_AGENT) Mozilla/5.0 (X11;Linux x86_64) AppleWebKit/537.17 (,类似壁虎) Chrome/24.0.1312.69 Safari/537.17

我使用这个:/[0-9.-]{4,}/i模式来去除数字,我得到:

上述模式的结果: Mozilla/5.0 (X11;Linux x86_64) AppleWebKit/* (X11,类似于壁虎) Chrome/* Safari/*

但是我的问题是如何删除X11;,我想要一个模式,它将删除第一个开口括号之后的所有东西,直到第一个空空间,我认为这是正确的方法。可以接受的替代办法是,完全可以用一种模式去掉括号。

有什么建议吗?

PS:我需要这个来解决移动检测和浏览器依赖的问题。所以请不要投反对票!

PS2:它的主要目的是检测移动客户端和桌面。在此之后,我将对其进行调整,为操作系统提供信息,等等。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-07 23:16:48

替换X11;而不是KHTML

代码语言:javascript
复制
preg_replace('/\([^,)]*? ([^\)]+)/','(*\1*',$agent);

在这里解释演示:http://regex101.com/r/vL6gT1

票数 1
EN

Stack Overflow用户

发布于 2013-02-07 23:18:01

试着使用

代码语言:javascript
复制
preg_replace('/[0-9.-]{4,} #your original regex
    | # OR
    ( # start capture
       \( # open paren
    ) # end capture (so we can put the paren back)
    [^\s]+ # any number of non-space characters
    \d # a digit
    [^\s]+ # the remaining non-space characters (including other digits)
    \s # the final space
/xi', '\1', $str);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14762473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档