0

次の文字列があります。

<?xml version="1.0" encoding="utf-8"?>
<data>
    <url>
        <![CDATA[http://site.ru/uploadImage?returnUrl=http%3A%2F%2Fwww.site.ru%2Fdk%3Fcmd%3DgrPostImageUploaded%26amp%3Btkn%3D3089&returnErrorUrl=http%3A%2F%2Fwww.site.ru%2Fdk%3Fcmd%3DgrPostImageUploaded%26amp%3Btkn%3D3916&flashLoad=on&photoId=]]>
    </url>
    <tokens>
        <token>
            <!CDATA[258xA2Z4KDWBBRo%2FBbZBLZqw%2F1adFyhFOsWKJTidWIgxfIJ8RWZYdpIsOJ3U6RevDsRBR7gKeG2V29evBOFXUaqTg%3D%3D]]>
        </token>
    </tokens>
    <maxImageSize>
        1024
    </maxImageSize>
</data>

token><![CDATA[(.*)]]コードで解析しようとしています

string token = Regex.Match(upload_info, @"CDATA[(.*)]]></token").Groups[1].Value;

しかし、トークンは空です。なんで?

4

1 に答える 1

7

[(.*)](「 、、、または」.のいずれかの文字を意味します。*)

あなたはおそらく意味し@"CDATA\[(.*?)\]\]></token"た。

気が進まない量指定子に注意してください。そうし.*?ないと、最初[CDATAから最後まですべてに一致することになり]]</tokenます。

しかし、最初から XML を解析するために正規表現を使用するべきではありません。特に、CDATAセクションはそうではありません。それがパーサーの目的です。

于 2013-04-09T13:39:26.370 に答える