我正在尋找一個正則表達式,我可以在我的令牌化器中使用它來編譯配置文件。這裏是在PHP代碼片段了一類:正則表達式匹配「foo/bar」而不是「foobar」需要
private $token = array(
"PATH" => "([a-zA-Z\_-]+\.|\*\.)+([a-zA-Z\_-]+|\*)",
"MIXED" => "[a-zA-Z0-9-_\(\)\/]{2,}",
"STRING" => "[a-zA-Z-_]{2,}"
);
private function getToken($string) {
foreach($this->token as $name => $pattern) {
preg_match("/^".$pattern."/", $string, $match);
if(!empty($match))
return array($name, $match[0]);
}
return false;
}
「混合」應與「富/酒吧」,而不是「foobar的」和「STRING」應與「foobar的」,而不是「富/酒吧」。目前「foobar」和「foo/bar」是「混合」。
我該如何在單個模式中寫下「AND NOT」?
謝謝。
「MIXED」=>「[a-zA-Z0-9 -_ \(\)] + \/[a-zA-Z0-9 -_ \(\)] +」 – Cougar 2012-04-07 18:01:20
更精確: 「MIXED」也是「foo()」,「foo(255)」 – Greggel 2012-04-07 18:06:52
Cougar正處於正確的道路上。你想要表達的想法是「至少包含一個斜線」。 – Kaz 2012-04-07 18:18:49