1

指定された string から $value を抽出する必要があります。

string text = "<h2 class="knownclass unknownclass1 unknownclass2" title="Example title>$Value </h2>"

コードの使用 -:

Match m2 = Regex.Match(text, @"<h2 class=""knownclass(.*)</h2>", RegexOptions.IgnoreCase);

それは私に完全な値を取得します -: unknownclass1 unknownclass2" title="Example title>$Value .しかし、必要なのは $value 部分だけです。教えてください。よろしくお願いします。

4

3 に答える 3

1

文字列が常にこの形式に従うと仮定して、次のコードを検討してください。

var index = text.IndexOf(">");
text.Substring(index + 1, text.IndexOf("<", index));
于 2012-10-12T01:24:25.333 に答える
0

文字列のパターンが常に同じである場合は、次のように考えることができます。

string text = "<h2 class=\"knownclass unknownclass1 unknownclass2\" title=\"Example title>$Value </h2>";
string result = "";

Regex test = new Regex(@"\<.*?\>(.*?)\</h2\>");
MatchCollection matchlist = test.Matches(text);

if (matchlist.Count > 0)
{
    for (int i = 0; i < matchlist.Count; i++)
    {
        result = matchlist[i].Groups[1].ToString();
    }
}

ただし、XML ファイルまたは HTML ファイルを操作している場合は、XML には XmlTextReader を、HTML には HtmlAgilityPack を使用することをお勧めします。

http://msdn.microsoft.com/en-us/library/system.xml.xmltextreader.aspx

http://htmlagilitypack.codeplex.com/

それが役に立てば幸い!

于 2012-10-13T12:59:56.040 に答える
0

何度も言われているように、HTML や XML の解析に正規表現を使用するのは良くありません。それを無視すると、キャプチャが多すぎます。動作するはずの代替正規表現を次に示します。

@"<h2 class=""knownclass[^""]*"">(.*)</h2>"
于 2012-10-12T01:18:39.123 に答える