C# XML节点字符串中的正则表达式不正确

C# XML节点字符串中的正则表达式不正确,c#,regex,winforms,C#,Regex,Winforms,我正试图让正则表达式工作,但几个小时后仍然无法破解它! 假设我有以下XML行: <MyXMLTag DataMember="$$Date$$" Name="$$DateName$$" DateTimeGroupInterval="MonthYear" DefaultId="$$MyId$$" /> <NameTag>$$item$$</NameTag> 我还有其他几个相同的变体

我正试图让正则表达式工作,但几个小时后仍然无法破解它! 假设我有以下XML行:

<MyXMLTag DataMember="$$Date$$" Name="$$DateName$$" DateTimeGroupInterval="MonthYear" DefaultId="$$MyId$$" />

<NameTag>$$item$$</NameTag>
我还有其他几个相同的变体,但没有一个能让我实现我的目标。 通过这些组合,我得到了不正确的结果:

$$" Name="$$
$$" Name="$$
$$" DateTimeGroupInterval="MonthYear" DefaultId="$$
您可以看到它正在捕捉XML属性之间的单词! 我想要的是将$$之间的文本替换为自定义文本

我不需要处理XML本身,因为我可以使用多种工具,但只能使用介于$$之间的文本。考虑代码不知道文本是否在标记、属性、根节点、子节点、一次或多次……/P>内。 救命啊 不要匹配两个$$分隔符之间的任何内容,而是查找连续的单词字符:

new Regex(@"(?<!\bDataMember="")\$\$(\w+)\$\$");

匹配$$DateName$$、$$MyId$$和$$item$$相似

为什么要尝试使用regex解析XML,而不是使用专用的XML解析器?正则表达式不是一个很好的工具。你确定可以试试吗?不@Amy,你可以忽略XML部分只是一个例子。它可以像一个类似格式的字符串行一样简单,例如:Key=$$Key$$。我们不能忽略这一点。发布示例输入后,每个人都会开始思考您使用的工具是否适合该任务。当你准备好所有的工具时,用C语言中的正则表达式解析XML真的是毫无意义的。如果你的输入是格式良好的XML,我会一直使用XML解析器,而根本不必使用正则表达式。如果格式不好,我会使用更宽容的HTML解析器,但仍然不使用正则表达式。
new Regex(@"(?<!\bDataMember="")\$\$(\w+)\$\$");