2017-08-18 1 views
0

私は、アプリケーションでクラス名がどこで使われているかを調べるために検索する必要があるHTMLファイルをたくさん持っています。HTMLファイルのクラスを見つけるためのRegex

Ex1の:これらの両方に一致する必要があります

<div class="something else field">Foo</div> 
<span class="field">Bar</span> 

Ex2の:

<div class="baseball-field baz">Baz</div> 

と一致してはならない、私は「何を私のファイル

にクラス名を検索するパターンを必要とします試しました: /class(?=field)/

しかし、これはdoesn '検索で他の文字がどのように表示されるかわからない。 Ex1のために働くclass.*(?=field)ではなく、2

+0

どの言語/プラットフォームを使用していますか? –

+0

正規表現以外にも他の方法を考えましたか?例えば。 https://stackoverflow.com/a/10585079/2798367 – ne1410s

+0

私はWebstormを使用してディレクトリを検索しています。 – SoluableNonagon

答えて

1

あなたの正規表現は、ほぼ正しいが、あなたの正規表現だけでclassfieldをチェックしながら、class="field"を検索したい:

更新:

は、私が試しました。

だから、あなたの代わりに、この正規表現を使用することができます:あなたが使用していることを確認どのようなツール/言語、また

class(?=="field") 

Regex demo

はないが、代わりにHTMLパーサを使用することを検討したりするXPath /代わりにxquery。

更新:質問を更新したので、ここで回答を提供しました。代わりに、この正規表現を使用することもできます。ところで

class(?=="(?:field|.*?\sfield|field\s.*?)") 

Working demo

、あなたが使用できるの交番の上にマージしたい場合:

class(?=="(?:(?:.*?\s)?field(?:\s.*?)?)") 

あなたは上記の正規表現ビットをクリーンアップすることができ非捕捉基を除去すること。

class(?=="((.*?\s)?field(\s.*?)?)") 
+0

答えてくれてありがとう、これはクラスがちょうど1つの値であるときにはうまくいくが、文字列に複数のクラスがあり、それを探しているときはどうだろうか? – SoluableNonagon

+0

私は 'class。*(?= field)'を試しましたが、それはあまりにもあまりにも一致しています。 like class = "baseball-field" – SoluableNonagon

+0

質問を更新しました – SoluableNonagon

関連する問題