正则表达式不是我真正的东西。但我在我的PHP文件中有这个,并发现如果传递的字符串有任何空格它将无法正常工作。有人可以提出修改。
正则表达式:
preg_match('/^(\S+)\/\d/', $_SERVER['HTTP_USER_AGENT'], $matches);
$product_name = $matches[1];
字符串将始终采用以下形式:
1productname/1.0.9 Sparkle/2
正向斜线后的所有东西都保持不变
在正斜杠可以改变之前,这是我正在寻找的部分。
我发现第一部分是否包含以下空格:
1 product name/1.0.9 Sparkle/2
这会破裂。
答案 0 :(得分:2)
尝试:
^(.+?)/
这应该抓住你的第一部分。
答案 1 :(得分:2)
试试这个:/^(.+?)\/\d/
如果您之后没有尝试匹配该值,请尝试以下操作:/^(.+?)\//
答案 2 :(得分:1)
正则表达式专门检查非空格字符(\S
)。既然你毫无疑问地问我会给你这样的解释。
这也很有道理。在用户代理字符串中期望以空格分隔的某些/数字签名列表是非常合理的。尽管它们通常也被分号隔开,但将空间视为比赛的一部分毫无意义。
答案 3 :(得分:0)
/(.*?)/
如果你只想解析 1productname / 1.0.9 Sparkle / 2 ,你开始搜索正斜杠,然后你就读了在第一个正斜杠和第二个斜杠之间的每一个。
或^(.*?)/
如果您只想阅读 1productname /1.0.9 Sparkle / 2 ,空格或不空格< / p>