我搜索一个正则表达式模式,它不应该与一个组匹配,而是与其他所有模式匹配 以下正则表达式基本上起作用:
index\.php\?page=(?:.*)&tagID=([0-9]+)$
但.*
不应与 TaggedObjects 匹配。
感谢您的任何建议。
答案 0 :(得分: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 :(得分:1)
试试这个。我认为你的意思是如果字符串包含'TaggedObjects'
的出现,你想要使比赛失败index\.php\?page=(?!.*TaggedObjects).*&tagID=([0-9]+)$