我正在寻找一个正则表达式,我可以在我的令牌化器中使用它来编译配置文件。这里是在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