RegEx,删除标签中的点

时间:2012-02-15 11:00:19

标签: c# regex

我一直在搜索和搜索,但却找不到解决办法 我需要在c#....

中使用RegExp删除XML文档标签中的点

所以例如:

test <12.34.56>test.test<12.34>

应该是:

test <12346>test.test<1234>

所以基本上删除点,但只在标签中....任何想法?

2 个答案:

答案 0 :(得分:5)

resultString = Regex.Replace(subjectString, @"\.(?=[^<>]*>)", "");
仅当下一个下一个尖括号是一个结束尖括号时,

才用空字符串替换一个点。

这当然是脆弱的,因为在标签之间的文本内部可能会出现关闭尖括号,但如果您确定不会出现这种情况,那么您应该没问题。

<强>解释

\.      # Match a dot
(?=     # only if the following regex can be matched at the current position:
 [^<>]* #  - zero or more characters except < or >
 >      #  - followed by a >
)       # End of lookahead assertion

答案 1 :(得分:2)

我会为它使用xml解析器

XDocument xdoc = XDocument.Load(new StringReader("<root><s123.45><s678.9>aaaa</s678.9></s123.45></root>"));
foreach (var elem in xdoc.Descendants()) 
    elem.Name = elem.Name.LocalName.Replace(".", "");
Console.WriteLine(xdoc);