2011年6月16日 星期四

[正規式] 複習 (?:) (?=) (?!) 的使用

不常使用 (?:) (?=) (?!)
請看下列範例:

$a = 'Windows2000';
var_dump(preg_match('/Windows(?:95|98|NT|2000)/',$a ,$m));
print_r($m);

結果:
int(1) Array ( [0] => Windows2000 ) ;


$a = 'Windows2000';
var_dump(preg_match('/Windows(?=95|98|NT|2000)/',$a ,$m));
print_r($m);

結果:
int(1) Array ( [0] => Windows )


$a = 'Windows2000';
var_dump(preg_match('/Windows(?!95|98|NT|2000)/',$a ,$m));
print_r($m);

結果:
int(0) Array ( )


$a = 'Windows3.1';
var_dump(preg_match('/Windows(?!95|98|NT|2000)/',$a ,$m));
print_r($m);

結果:
int(1) Array ( [0] => Windows )

【下列文章您可能也有興趣】

2 則留言:

share 提到...

可以請問一下,這種用法實際的英文名稱叫做什麼?

因為也有看過這個用法,查不到相關資料

(?=.*[0-9])(?=.*[a-z])

千江有水千江月 提到...

中文解釋:
(?#comment) 添加註釋comment,可以增強正則可讀性。
(?=pattern) 指定在模式之後必須跟隨值pattern。
(?!pattern) 指定在模式之後不能跟隨值pattern。
(?n) 在模式內部而非結尾處定義模式選項n。
(?: ) 消耗字符,不捕獲匹配結果。