2011-09-23 53 views
4

私は、HTMLタグ内の属性を探す正規表現パターンを探しています。具体的には、すべてのインスタンスを検索したいと思います。HTMLタグからHTML属性を削除する正規表現(style = "")?

style="" 

...内に含まれるHTMLタグから削除してください。もちろんこれには二重引用符に含まれるものも含まれます。

私はこれを行うにはClassic ASPを使用しています。私はすでに、文字列内のすべてのHTMLタグを探してそれらを削除する別の正規表現パターン用の関数設定を持っています。それは素晴らしい作品です。しかし今は、スタイル属性をすべて削除するためのパターンが必要になりました。

ご協力いただければ幸いです。

+0

[正規表現でHTMLを解析しないでください](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – Bohemian

+0

代わりは何ですか? – jkupczak

+1

パーサを使用します。 "HTML"の "L"は手がかりです - "言語"。あなたのHTMLが厳密であれば運が良いかもしれませんが、安全のためにはトークンで言語トークンのように解析する必要があります。 – Bohemian

答えて

13

私は、これはそれを行うかもしれないと思う:

/style="[a-zA-Z0-9:;\.\s\(\)\-\,]*"/gi

ます。また、グループをキャプチャでこれらを置くことができ、一部の部品を交換する場合のみ

/(style=")([a-zA-Z0-9:;\.\s\(\)\-\,]*)(")/gi

実施例:http://regexr.com?2up30

+0

閉じるが、ハイフンを考慮していない。 1に達するとすぐに一致を停止します。例えば、テキストアライメントや背景色と同様です。 http://regexr.com?2up1m – jkupczak

+0

申し訳ありません@jimmykup!ハイフンを忘れてしまった。私は '\ - 'で上記の答えを編集しました。例も更新されました。今すぐチェックしてください。うまくいくはずです。 –

+0

素晴らしい作品!それはコンマでも壊れていたことに気づいた。 font-familyのように:Arial、Helvtica;私はそこにRegExを追加する方法を理解するだけで十分です。ありがとう! – jkupczak

0

これはperlで動作します。たぶんあなたは少しASPルールに一致する正規表現を変更する必要がありますが、それは任意のタグで動作するはずです。

$file=~ s/(<\s*[a-z][a-z0-9]*.*\s)(style\s*=\s*".*?")([^<>]*>)/$1 $3/sig; 

ここで、行はhtmlファイルです。これは、.NETのC#

 string resultString = null; 
     string subjectString = "<html style=\"something\"> "; 

     resultString = Regex.Replace(subjectString, @"(<\s*[a-z][a-z0-9]*.*\s)(style\s*=\s*"".*?"")([^<>]*>)", "$1 $3", RegexOptions.Singleline | RegexOptions.IgnoreCase); 

結果である

はまた:<html >

19

はおそらく、単純な式は二重引用符を除く二重引用符の間

style="[^\"]*" 

のですべてです。

+0

非常にうまくいきます。私は受け入れられた答えを働かせることができませんでした。 – Cromwell

0

私にとってこの発現作品は:

style=".+"/ig 
+0

文字一致では二重引用符を除外する必要があります。 'style =" [^ "] +"/ig' – IanB

0

私はJason Gennaro's正規表現を試してみましたが、わずかこの正規表現は、例えば、文字列内&quotでいくつかの特定の例をキャプチャ

/style="[a-zA-Z0-9:;&\."\s\(\)\-\,]*|\\/ig

それを修正

<div class="frame" style="font-family: Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; background-color: rgb(245, 245, 245);">some text</div> 
関連する問題