正则表达 - 模式匹配

时间:2016-01-24 12:32:07

标签: regex

如何在/ blog之后包含所有内容,但不应包含wp-content和wp-includes等字词?

目前正在使用正则表达式显示所有内容:

^/blog/*

我试过这个但没有运气:

^/blog/(!(wp-content&&wp-includes))*

的url:

example.com/blog/content (should include)
example.com/blog/page/2 (should include)
example.com/blog/wp-content/ (shouldn't include)
example.com/blog/wp-includes/ (shouldn't include) 

2 个答案:

答案 0 :(得分:2)

你的第一个正则表达式

^/blog/*

表示一个字符串,以/blog开头,后面有零或更多正斜杠。我猜你的意思只是

^/blog

^/blog/.*$

至于如何排除这两个词:

^/blog(.(?!wp-content|wp-includes))*$

我们的想法是一次推进一个字符(.),然后使用negative lookahead ((?!))检查wp-contentwp-includes之后是否跟随$字符串(blog)。

如果你想在^/blog/(?!.*(wp-content|wp-includes)).*$ 之后确保斜杠而不重复正则表达式,你可以先放下负向前瞻,然后开始匹配字符:

wp-content

这首先确保在任何字符(wp-includes)之后没有.*或{{1}},然后继续匹配。

答案 1 :(得分:0)

你可以使用这样的负向前瞻:

/blog(/(?!wp-content|wp-includes).*)

如果匹配的语义是"在网址"中,那么您很可能只想匹配非空白字符:

/blog(/(?!wp-content|wp-includes)\S*)

如果超过2" wp - "示例:

/blog(/(?!wp-)\S*)

..不使用^,因为您的示例在字符串的开头不匹配

https://regex101.com/r/gP4eZ7