正则表达式替换单词没有按预期工作

时间:2014-10-23 07:46:59

标签: c# regex

我有一个不完整的xml文件需要快速修复。简化,以下是它的用法:

<positions><date></date><cust></cust><date></date><cust></cust></positions>

以下是处理下游需要的内容:

</date><cust></cust></position><position><date></date><cust></cust></position></positions>

我认为这样可行:

Regex r = new Regex(@"\b<date>\b");
findFirstTag = r.Replace(findFirstTag, "<position><date>");
Regex x = new Regex(@"\b</cust>\b");
findFirstTag = x.Replace(findFirstTag, "</cust></position>");

Console.WriteLine("Converted by regex: " + findFirstTag + "\n");

没有任何改变。任何人吗?

1 个答案:

答案 0 :(得分:2)

您使用的是word boundary,但在&#34;&lt;&#34;之前没有#{}}。或者在&#34;&gt;&#34;之后。从单词字符到非单词字符或从非单词字符到单词字符的变化出现字边界。在这里,您希望在两个非字字符之间加上#34;&gt;&lt;&#34;这总是错误的。

只需删除它就可以了:

Regex r = new Regex(@"<date>");

Regex x = new Regex(@"</cust>");