0

特定のパターンに一致する正規表現を考え出そうとしています。

サンプル テスト文字列が次のような場合:

/wp-content/themes/sometheme/style.css

正規表現は次のようにする必要があります。

  1. 最初から完全に一致し、最後から完全に/wp-content/themes/一致する必要があります。/style.css
  2. NOT MATCH、残り (項目 1 の最初の文字列と最後の文字列の間) がrwsarbor
  3. MATCH、余りが BUT の場合mythemename
  4. 中央の動的部分については、任意の数の文字と任意の文字タイプ (az、0-9 などだけでなく) に一致する必要があります。

たとえば、次のようには一致しません。

/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

これは複雑さの点で私のリーグから少し外れているので、コミュニティに支援を求めています.

4

3 に答える 3

3

これを試して :

^/wp-content/themes/(?!mythemename).*/style.css$

デモ: http://regexr.com?30ote


ヒント:否定先読みアサーションを使用します。

于 2012-04-25T13:07:12.303 に答える
1

そこから 2 つの正規表現を作成します。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

于 2012-04-25T13:09:12.770 に答える
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

構文と修飾子は、使用する特定の正規表現エンジンによって異なります。

于 2012-04-25T13:18:53.813 に答える