如果有空格,这个正则表达式将不起作用

时间:2011-11-21 10:55:49

标签: regex

正则表达式不是我真正的东西。但我在我的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

这会破裂。

4 个答案:

答案 0 :(得分:2)

尝试:

^(.+?)/

这应该抓住你的第一部分。

答案 1 :(得分:2)

试试这个:/^(.+?)\/\d/

如果您之后没有尝试匹配该值,请尝试以下操作:/^(.+?)\//

答案 2 :(得分:1)

正则表达式专门检查非空格字符(\S)。既然你毫无疑问地问我会给你这样的解释。

这也很有道理。在用户代理字符串中期望以空格分隔的某些/数字签名列表是非常合理的。尽管它们通常也被分号隔开,但将空间视为比赛的一部分毫无意义。

答案 3 :(得分:0)

/(.*?)/如果你只想解析 1productname / 1.0.9 Sparkle / 2 ,你开始搜索正斜杠,然后你就读了在第一个正斜杠和第二个斜杠之间的每一个。

^(.*?)/如果您只想阅读 1productname /1.0.9 Sparkle / 2 ,空格或不空格< / p>