2012-02-15 13 views
5

私は検索して検索していますが、解決策を見つけることができません。
私はC#で正規表現を使用してXMLドキュメントのタグにドットを削除する必要があります....RegExp、タグ内のドットを削除する

ので、例えば:

test <12.34.56>test.test<12.34> 

は次のようになります。

test <12346>test.test<1234> 

そこで、基本的タグを削除するだけです....任意のアイデア?

+2

のXMLパーサーを使用するには、あなたが "**正規表現で** ...削除する必要があり、" 特に理由はありますか? – AakashM

答えて

5
resultString = Regex.Replace(subjectString, @"\.(?=[^<>]*>)", ""); 

は、次の角括弧が閉じ角括弧の場合にのみ、ドットを空の文字列で置き換えます。

これはもちろん、タグ間のテキストの内側に閉じ括弧が現れる可能性があるため、脆いですが、そうでないことが確実であればOKです。

説明:

\.  # Match a dot 
(?=  # only if the following regex can be matched at the current position: 
[^<>]* # - zero or more characters except <or> 
>  # - followed by a > 
)  # End of lookahead assertion 
+0

ええ、それはとてもうまくいった!なぜ私は完全に理解しているのか分かりませんが、それは問題ではありません:-) – NicolajB

+0

@NicolajB:私は説明を追加しました。 –

+0

今まで説明が見られませんでした。非常に便利! thx a lot – NicolajB

2

私はそれ

XDocument xdoc = XDocument.Load(new StringReader("<root><s123.45><s678.9>aaaa</s678.9></s123.45></root>")); 
foreach (var elem in xdoc.Descendants()) 
    elem.Name = elem.Name.LocalName.Replace(".", ""); 
Console.WriteLine(xdoc); 
+0

私は尋ねる者が実際にはxmlではなく、ちょうど山かっこを含む文字列であることが判明するという厄介な疑いがあります。私はうまく間違っている可能性があります:) – AakashM

+0

AakashMは実際にはXMLではないと言ったり、別の言い方をすると、(XMLをたどるだけの)良い点です。私に文書を渡した人はXMLだと思っています....しかしそれはうまくいきません:-) – NicolajB

関連する問題