2017-05-03 8 views
-2

ルート/エレメント1 /エレメント2 [@ attr1 = 'abc'] /エレメント3 [attr3 = 'xyz'] /エレメント4 /エレメント5 [attr4 = 'pqr'] /エレメント6 /エレメント7Regex検索の単語リストを除外します

attr4以外の上記xpathのすべての属性をクリアします。期待される出力は - root/element1/element2/element3/element4/element5 [attr4 = 'pqr']/element6/element7

あなたはこれを手伝ってもらえますか?

+0

あなたの正規表現での問題は何でしょうか。 – Rahul

+0

ヒント:すべての属性と角かっこに一致する正規表現パターンを定義しますが、名前がattr4の属性と一致しません。この正規表現を正常に定義した場合は、Regex.Replace(...)の呼び出しで使用して、xpathのすべての属性を空の文字列( "")に置き換えてください。 – elgonzo

+0

これは私のすべての正規表現ですこのパターンに除外リストを含める方法を知りたいです。 – user845392

答えて

1

以下の正規表現を使用して、attr4を含まないすべての属性と一致させることができます。次に、Regex.Replace()を直接使用してこれらのすべてを取り除くことができます。

(\[((?!attr4)[^\]])*\]) 

Regex Demo

コード:

string input = "root/element1/element2[@attr1='abc']/element3[attr3='xyz']/element4/element5[attr4='pqr']/element6/element7"; 
Regex regex = new Regex(@"(\[((?!attr4)[^\]])*\])"); 
var output = regex.Replace(input, ""); 

出力:

root/element1/element2/element3/element4/element5[attr4='pqr']/element6/element7 

Dotnet Fiddle

+0

新しい正規表現何度も何度もパラメータを使って正規表現をコンパイルし、その値を実行時に動的にパラメータに渡す必要があります(attr4は実行時に渡されます)。 – user845392

関連する問題