2011-01-11 91 views
1

我搜索一個正則表達式模式,它不應該匹配一個組,但其他的一切。
繼正則表達式的工作basicly:Antimatch與正則表達式

index\.php\?page=(?:.*)&tagID=([0-9]+)$ 

.*不應該匹配TaggedObjects

感謝您的任何建議。

+0

TaggedObjects?這是不應該匹配的字符串嗎? – Jaskirat 2011-01-11 17:53:07

+0

負面看向任何人? – delnan 2011-01-11 17:53:39

回答

4

(?:.*)是不必要的 - 你沒有分組任何東西,所以.*意味着完全相同。但這不是你的問題的答案。

,以匹配不包含另一個預定義的字符串任何字符串(比如TaggedObjects),使用

(?:(?!TaggedObjects).)* 

在你的榜樣,

index\.php\?page=(?:(?!TaggedObjects).)*&tagID=([0-9]+)$ 

將匹配

index.php?page=blahblah&tagID=1234 

並且不會匹配

index.php?page=blahTaggedObjectsblah&tagID=1234 

如果你想允許的比賽,只有排除完全匹配的字符串TaggedObjects,然後用

index\.php\?page=(?!TaggedObjects&tagID=([0-9]+)$).*&tagID=([0-9]+)$ 
1

試試這個。我認爲你的意思是你想失敗的比賽,如果字符串包含'TaggedObjects'發生

index\.php\?page=(?!.*TaggedObjects).*&tagID=([0-9]+)$