我正在尝试使用正则表达式来匹配特定模式。
如果样本测试字符串如下:
/wp-content/themes/sometheme/style.css
正则表达式应该:
/wp-content/themes/
,并且也应该从最后确切地匹配/style.css
。rwsarbor
mythemename
例如,它不匹配:
/wp-content/themes/mythemename/style.css
它应匹配
/wp-content/themes/jfdskjh-ekhb234_sf/style.css
/wp-content/themes/another_theme/style.css
/wp-content/themes/any_other-theme/style.css
/wp-content/themes/!@#$%^&*()_+{}|:"?</style.css
这个在复杂性方面有点偏离了我的联盟,所以我期待社区的帮助。
答案 0 :(得分:3)
试试这个:
^/wp-content/themes/(?!mythemename).*/style.css$
答案 1 :(得分:1)
只需要制作两个正则表达式,一个匹配,一个不匹配(这里用grep做):
echo /wp-content/themes/sametheme/style.css | egrep "^/wp-content/themes/.*/style.css$" | egrep -v "(simetheme|sametheme)"
而不是rwsarbor和mytheme,我选择了一些更好的可测试的东西。
较短的演示本来没问题,顺便说一下:/ start / middle / end
答案 2 :(得分:0)
Vim正则表达式:
^\/wp-content\/themes\/\(rwsarbor\|mythemename\)\@!.\{-}\/style\.css$
重点:
\(__\|__\) - match one or the other pattern
\@! - match if the preceeding atom didn't match
.\{-\} - Like .* but non-greedy, otherwise style.css would get sucked up here
语法和修饰符取决于您将要使用的特定正则表达式引擎。