2016-12-21 31 views
1

複数のcss/scssファイルの大規模なコードベース内で、正規表現(別名正規表現PHPStormを使用)を検索して角括弧内のみを検索しようとしています{ css }大括弧内検索の正規表現(正規表現)

基本的には、CSS要素に2つのフォントウェイトが割り当てられているインスタンスのすべてを見つけようとしており、1つだけCSSウェイトを上書きしています。

例えば:と交換する

.classname { font-weight: 100; color: blue; font-weight: 400; } 

.classname { font-weight: 100; color: blue; } 

しかし、フォントの重みはすべて異なっています。そして、大括弧内でのみ検索する必要があります。私は正規表現についてよく知らないが、コードのグループ(ワイルドカード)を置き換えるのに(.*)$1を使用している。

また、複数の行を検索する場合は... &個のスペースがある可能性があります。正規表現に考慮する必要があります。

.classname { 
    font-weight: 100; 
    color: blue; 
    font-weight: 400; 
} 

私は\{(.*)font-weight:(.*)font-weight:(.*)\}を試みたのだが、ただ1つの行のコードを検索します。要するに

... は、どのように私はそれに割り当てられた2フォントの重みを持っている任意のCSSクラス名を検索します:*は何もすることができ{ * font-weight:*; * font-weight:*; * }

.classname1 { 
    font-weight: anything; 
    otherCSS: anything; 
    moreCSS: anything; 
    font-weight: anything; 
} 

のようなものである必要があります。任意の数のスペース、任意の文字、任意の改行。

+0

https://regex101.com/r/2PgW0N/1 –

+0

何ですか?私はこのregex101サイトが存在することを知りませんでした! Thanks @ Mr.kang – Greg

+0

https://regex101.com/r/9Bvra9/1を参照してください。幸い! –

答えて

1

(.*?\{\sfont-weight: 100;\s.*?;\s)(?:font-weight.*?)?(\})が役に立ちます。

文字列全体を$1$2で置き換える必要があります。

regex demo

1

最後の属性は、フォントの太さである必要はありませんように私は、TheLostMindの正規表現を改善しています。

(.*?\{\sfont-weight: 100;\s.*?;\s)(?:font-weight:.*?;)?(.*\})

+0

これはファイル内の最後の中括弧まで一致しませんでしたので、結果が間違っていますか? – sandbo00

+0

[こちらを試してください](https://regex101.com/r/7aW7sj/1) – Faria