我搜索一个正则表达式模式,该模式不应该与组匹配,而是与其他所有内容匹配。
以下正则表达式模式基本上可以工作:
index\.php\?page=(?:.*)&tagID=([0-9]+)$
Run Code Online (Sandbox Code Playgroud)
但是.*不应与TaggedObjects匹配。
感谢您的任何建议。
(?:.*)是不必要的-您无需将任何内容分组,因此.*含义完全相同。但这不是您问题的答案。
要匹配不包含另一个预定义字符串(例如TaggedObjects)的任何字符串,请使用
(?:(?!TaggedObjects).)*
Run Code Online (Sandbox Code Playgroud)
在您的示例中
index\.php\?page=(?:(?!TaggedObjects).)*&tagID=([0-9]+)$
Run Code Online (Sandbox Code Playgroud)
将匹配
index.php?page=blahblah&tagID=1234
Run Code Online (Sandbox Code Playgroud)
并且不匹配
index.php?page=blahTaggedObjectsblah&tagID=1234
Run Code Online (Sandbox Code Playgroud)
如果确实要允许该匹配并且仅排除确切的字符串TaggedObjects,则使用
index\.php\?page=(?!TaggedObjects&tagID=([0-9]+)$).*&tagID=([0-9]+)$
Run Code Online (Sandbox Code Playgroud)