設定ファイルをコンパイルするために私のトークナイザで使用できる正規表現を探しています。ここでは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;
}
"MIXED" "FOO /バー" と一致していない "foobarに" と "STRING" 必要がある "foobarに" と一致してはならない「FOO /バー"。現在、 "foobar"と "foo/bar"は "MIXED"です。
「AND NOT」を1つのパターンに書き込むにはどうすればよいですか?
ありがとうございます。
「ミックスド」=>「[a-zA-Z0-9 -_ \(\)] + \/[a-zA-Z0-9 -_ \(\)] + " – Cougar
、 "MIXED"も "foo()"、 "foo(255)" – Greggel
クーガーは正しい道にあります。あなたが望むのは、「少なくとも1つのスラッシュを含んでいる」という考えを表現することです。 – Kaz