RegExp,删除标签中的点
问题描述:
我一直在搜索和搜索,但找不到解决方案。
我需要删除在C#中使用正则表达式的XML文档的标记点....RegExp,删除标签中的点
因此,例如:
test <12.34.56>test.test<12.34>
应该是:
test <12346>test.test<1234>
所以基本上删除点,但只在标签....任何想法?
答
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
答
我会使用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);
是否有你 “需要删除... **与**正则表达式” 一个特别的原因? – AakashM 2012-02-15 11:13:24