使用正则表达式解析$ Resource字符串

时间:2011-02-24 12:05:17

标签: c# .net regex

假设我有以下xml字符串:

<Item Name=\"$Resources:myresource,somestring;\"</Item>

现在我想挑选出所有出现的$ Resource标签(可以有任意数量)。

我实际上不想用相应的值替换这些resx字符串,但我已经获得了代码。

“问题”是应该为我获取这些值的代码要求我传入资源文件的名称(例如$ Resource之后的部分。在这个例子中它将是myresource)和实际资源对象(例如somestring)。

现在我一直在玩正则表达式为我完成这个,我真正想要的是将这两个值分成两个不同的组(因为有时“资源文件”将是默认值,例如它也可以看起来像$ Resource:somestring)。

任何人都知道如何做到这一点,或者我可能会在.NET中使用能够为我做这件事的东西,例如:给我一个属性中的类名(我认为它是资源文件的合适名称),另一个属性中的资源对象?

1 个答案:

答案 0 :(得分:3)

RegEx实际上非常简单:

(\$Resources\:(?<name>[^,;]+),(?<content>[^;]+);)|(\$Resources\:(?<content>[^;]+);)

对于以下字符串,它将返回3个结果,其中两个结果包含组namecontent,一个结果只有组content
样本数据:

<Item Name=\"$Resources:somedefaultstring;$Resources:myresource,somestring;$Resources:myresource2,somestring2;$Resources:somedefaultstring;\"</Item>

更新:
根据评论修正。