2017-01-11 15 views
0

私はクラスを含むファイル(HTML)のリストを持っています。正規表現ファイルのリスト内のクラスを見つける

1 <div class="homepage">...</div> 
2 <div class="abc homepage">...</div> 
3 <div class="abc homepage2">...</div> 
4 <div class="abc homepage four five">...</div> 
5 <div class="abc homepagenot five">...</div> 
6 <div class="abc homepage-not five">...</div> 

私はRegex Expressを使用してVisual Studioで正規表現を使用しようとしています。

私は、検索条件として

class=".*homepage.*" 

を使用しようとしてきたが、それはまた、私のポイント5,6を返しています。

基本的に私はちょうどポイント1、2、4

が、私は正規表現で何をしないのですしたいですか?

+1

それはまた 'homepage2'、マッチを希望されていない' homepagenot'と 'homepagenot'に一致するので、動作しません。 – Matt

答えて

0

Try class=".*homepage[ "]これは、homepageの直後にスペースまたは見積もりを探します。

1

\bという単語境界が存在するかどうかをチェックして、単語以外の文字を検索することができます(長さはゼロにすることもできます)。また、ハイフンは、\bにマッチするが、あなたのリストにアイテム6は必要ない非単語文字であるため、ハイフンの否定的な先読みも含まれています。

\bhomepage\b(?!-) 

ここではRegex101 pageです。

0

私はあなたがclass = "..."内でシングルワードホームページを探したいとします。 正規表現thisをご覧ください。

class=\"(.+)*homepage(.+)*\" 
+0

リンク腐敗を避けるためにあなたのポストに正規表現を含めてください。 – reynoldsnlp

0

最初に4つのdivをマッチとして使用すると仮定すると、この式が有効です。

homepage(?!not|-)(.*?) 

var divs ="<div class='homepage'></div>" 
 
+"<div class='abc homepage'></div>" 
 
+"<div class='abc homepage2'></div>" 
 
+"<div class='abc homepage four five'></div>" 
 
+"<div class='abc homepagenot five'></div>" 
 
+"<div class='abc homepage-not five'></div>" 
 
+"<div class='abc homepage2'></div>"; 
 

 
var matches = divs.match(/(homepage)(?!not|-)(.+?)/g); 
 

 
console.log(matches, matches.length);

関連する問題