【发布时间】:2019-12-16 04:26:01
【问题描述】:
我正在从包含以下内容的文本文件中读取内容
<ID> test data </Id> <Sub_Tab> test data </sub_tab> <form> form data </form>
我的要求是我在 ID、Sub_tab 标记内的任何内容,我想从这些标记内的内容中删除尾随和前导空格,但表单标记内的内容应该保持不变。我的输出应该是:
<iD>test data</Id> <Sub_Tab>test data</sub_tab> <form> form data </form>
尝试了很多模式,但都没有成功
Regex regex = new Regex(@"/>[ \t]+</");
string newContent = regex.Replace(fileContent, "><");
【问题讨论】:
-
强制性“如果这是 XML,请使用 XML 解析器”注释。
-
Regex 绝对是错误的工具。使用 XML 解析器和 XPath。在这里,
//id/text()|//sub_tab/text() -
这看起来像一个 XML 字符串。用正则表达式解析 XML不容易。请改用 XML 解析器。 BTW XML 区分大小写。您不能在 XML 字符串中包含
<ID>和</Id> -
s = Regex.Replace(Regex.Replace(s, @"\s+(</(?:ID|Sub_Tab)>)", "$1"), @"(<(?:ID|Sub_Tab)>)\s+", "$1")。甚至Regex.Replace(s, @"\s+(</(?:ID|Sub_Tab)>)|(<(?:ID|Sub_Tab)>)\s+", "$1$2") -
@UmeshKumar - XML 也是一个带有标签的文本文件。如果不是太长,您能否发布一个示例文件。如果它遵循 XML 格式,那么解析器绝对是你想要的。