2016-06-24 9 views
0

私はあるテキストからHTMLコードを取り除く必要がある状況があります。しかし、入力テキストにはリストが含まれているため、その場合は番号を保持したいと考えています。Regexの置換文字列に一致するインデックスを含める

私が行う場合

result = Regex.Replace(result, "<li>", vbNewLine & "1. ", RegexOptions.IgnoreCase) 

は、その後、他のHTMLタグを除去した後、私はで終わる :

1. List item one 
1. List item two 
1. List item three 

交換時のマッチのインデックスを取得する方法はありますか?例えばので

result = Regex.Replace(result, "<li>", vbNewLine & replacementIndex + 1 & " ", RegexOptions.IgnoreCase) 

その後、他のHTMLタグを除去した後、私はなるだろう:

1. List item one 
2. List item two 
3. List item three 

が可能です。この??

注:これは関数内にあり、各リストは別々に処理され、順序付けられていないリストには代わりに箇条書き(*)が付きます。

答えて

0

これは適切な出発点です。 @"(\<ul\>)((.|\n)*?)(\<\/ul\>)"これはタグの間のすべてに一致します。

0

これは面倒ですが、次のようなものです。一度に1つずつ変更してください。これは、大規模なデータセットでは遅くなる可能性があります。

int lineNbr = 1; 
string newResult = result.Replace("(?i)<li>", vbNewLine & (lineNbr++).ToString() & '. ', 1); 
while (newResult != result) 
{ 
    result = newResult; 
    newResult = result.Replace("(?i)<li>", vbNewLine & (lineNbr++).ToString() & '. ', 1); 
} 
関連する問題