我尝试用PHP执行preg_match但是我无法正确地逃避斜杠。 preg_match应返回Prozessor和第一个斜杠之间的子范围
$str="Prozessor: AMD A-Serie A8-4500M / 19 GHz ( 28 GHz ) /";
preg_match('/Prozessor: (.*) \//', $str, $matches)
Prozessor: AMD A-Serie A8-4500M / 19 GHz ( 28 GHz ) /
我想得到应该给我回复的处理器名称
AMD A-Serie A8-4500M
我做错了什么
答案 0 :(得分:2)
使用/Prozessor: (.*?) \//
。这将取代greedy selector with a lazy selector。例如:
$str="Prozessor: AMD A-Serie A8-4500M / 19 GHz ( 28 GHz ) /";
preg_match('/Prozessor: (.*?) \//', $str, $matches);
var_dump($matches[1]);
// string(33) "Prozessor: AMD A-Serie A8-4500M"
答案 1 :(得分:2)
使用非贪婪的量词:
preg_match('/Prozessor: (.*?) \//', $str, $matches)
或字符类:
preg_match('/Prozessor: ([^\/]*) \//', $str, $matches)
另请注意,如果更改正则表达式分隔符,则无需担心转义它:
preg_match('#Prozessor: ([^/]*) /#', $str, $matches)
答案 2 :(得分:0)
这有效:
$str="Prozessor: AMD A-Serie A8-4500M / 19 GHz ( 28 GHz ) /";
preg_match('/^Prozessor: (?P<prozessor>[a-z0-9\s-]+) \//i', $str, $matches);
var_dump($matches['prozessor']);
输出
string(20) "AMD A-Serie A8-4500M"
或者,您可以在正则表达式的末尾添加一个不合理的修饰符:
preg_match('/Prozessor: (.*) \//U', $str, $matches)
此处提供更多信息:http://php.net/manual/en/reference.pcre.pattern.modifiers.php