質問: タグと htmlタグを削除する正規表現が必要 私はC#でhtmlファイルを解析し、htmlからテキストを抽出しています。私のhtmlファイルにはたくさんのタグがあります。 HTMLファイルには、選択タグとオプションタグがあります。 htmlファイルからselectタグとoptionタグを削除する正規表現が必要です。私はこの情報を望まない。だから私は任意の正規表現を使用してそれを削除したい。 以下は、htmlファイルから削除したいhtmlです: ``` > CA WA TX NV CO MI SC 0 追加された 06 2月 2012 〜で 10:34 著者 Waseem Fastian 編集された 06 2月 2012 〜で 12:28 ビュー: 4 源 ru fr es pt de ar ちょうど楽しみのために: stackoverflow.com/questions/1732348/... 追加された 06 2月 2012 〜で 10:37, 著者 Ray, 源 HTMLの解析には正規表現は必要ありません。 追加された 06 2月 2012 〜で 10:36, 著者 hsz, 源 これを取れ; htmlagilitypack.codeplex.com 追加された 06 2月 2012 〜で 10:47, 著者 Christopher McAtackney, 源 ああ、あなたはそれのためにいる;-) 追加された 06 2月 2012 〜で 10:45, 著者 Polyfun, 源 私はこれまで正規表現Regex.Replace(input、@ "] *)?>(<オプション(\ s + [^>] *)?> *)?>)* <?> "、" string.Empty ";)+(^ s) 追加された 06 2月 2012 〜で 10:48, 著者 Waseem Fastian, 源 @Amar Palsapure、私はhtmlファイルからこれらのhtmlタグを削除する必要があります、私はこのinformaion.Iを必要としない私のhtmlファイルからタグとタグを削除する正規表現が必要です。 ```
回答: RegExを使用してHTMLタグを単純に削除する必要はありません。 次のメソッドは、HTMLコード文字列を繰り返し処理し、タグなしで新しい戻り文字列を作成します。 この方法はRegExよりも高速です。 ``` public static string StripHTMLTags(string str) { char[] array = new char[str.Length]; int arrayIndex = 0; bool inside = false; for (int i = 0; i < str.Length; i++) { char c = str[i]; if (c == '<') { inside = true; continue; } if (c == '>') { inside = false; continue; } if (!inside) { array[arrayIndex] = c; arrayIndex++; } } return new string(array, 0, arrayIndex); } ```