正则表达式解析方括号

时间:2013-04-09 13:36:08

标签: c# regex

我有一个字符串:

<?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;

但令牌是空的。为什么呢?

1 个答案:

答案 0 :(得分:7)

[(.*)]表示“以下一个字符:(.*)”。

你可能意味着@"CDATA\[(.*?)\]\]></token"

请注意不情愿的量词.*?,或者您可以匹配从第一个[CDATA到最后一个]]</token的所有内容。

但是你不应该首先使用正则表达式来解析XML,尤其不是CDATA部分。这就是解析器的用途。