Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用regex删除空标记?_C#_Regex - Fatal编程技术网

C# 如何使用regex删除空标记?

C# 如何使用regex删除空标记?,c#,regex,C#,Regex,清理完后,我得到了一堆空标签。我想删除它们,但到目前为止我一直在使用的表达式: Regex.Replace(clean, "(<[/a-zA-Z]+?)([^>]*?)(>)", "$1$3"); 我看过一场讨论,但没有弄清楚。如何确保标记的第一个和第二个发现的内容是相同的,以便将它们匹配在一起,除了斜杠?我认为您不需要检查它们是否属于同一类型。这是假设您有一个有效的XML结构。如果是这样的话,表格上不可能有任何内容: 因此,您可以使用以下正则表达式 Regex.Replac

清理完后,我得到了一堆空标签。我想删除它们,但到目前为止我一直在使用的表达式:

Regex.Replace(clean, "(<[/a-zA-Z]+?)([^>]*?)(>)", "$1$3");

我看过一场讨论,但没有弄清楚。如何确保标记的第一个和第二个发现的内容是相同的,以便将它们匹配在一起,除了斜杠?

我认为您不需要检查它们是否属于同一类型。这是假设您有一个有效的XML结构。如果是这样的话,表格上不可能有任何内容:

因此,您可以使用以下正则表达式

Regex.Replaceinput,/][^>]*>]*>]*>; 我也发现了,但我不确定他们为什么在结束标记处使用加号而不是星。最好问问这件事

意识到你甚至可能需要删除那些看起来是空的标签——它们包含空的空间和类似的东西,我可以回到新浪的解决方案并添加以下内容

Regex.Replace(input, @"<([^>/][^>]*)>((&nbsp;)*|\s*)</\1>", String.Empty);

就在这附近的某个地方,我们经历了从可爱到讨厌的正则表达式

我认为你不需要检查它们是否是同类。这是假设您有一个有效的XML结构。如果是这样的话,表格上不可能有任何内容:

因此,您可以使用以下正则表达式

Regex.Replaceinput,/][^>]*>]*>]*>; 我也发现了,但我不确定他们为什么在结束标记处使用加号而不是星。最好问问这件事

意识到你甚至可能需要删除那些看起来是空的标签——它们包含空的空间和类似的东西,我可以回到新浪的解决方案并添加以下内容

Regex.Replace(input, @"<([^>/][^>]*)>((&nbsp;)*|\s*)</\1>", String.Empty);

就在这附近的某个地方,我们经历了从可爱到讨厌的正则表达式

您可以使用backreference来确保结束元素的名称与开始标记的名称匹配。这是我通过扩展Konrad的解决方案得到的模式:

result = Regex.Replace(input, @"<([^>/][^>]*)></\1>", String.Empty);

此处\1指模式中匹配的第一个组,该组由模式中的括号表示,括号围绕着开始元素的名称。

您可以使用反向引用来确保结束元素的名称与开始标记的名称匹配。这是我通过扩展Konrad的解决方案得到的模式:

result = Regex.Replace(input, @"<([^>/][^>]*)></\1>", String.Empty);

此处\1指模式中匹配的第一组,由模式中的括号表示,括号围绕着开始元素的名称。

这将是一个迟来的答案,但正如我在您的

虽然,它可以工作在一些简单的情况下,这将带来更多的麻烦,而维护和处理角案件

使用:

输出将处理@kirmir提到的案例

<root>
    <notempty>text</notempty>
</root>

这将是一个迟来的答复,但正如我在你的报告中所说:

虽然,它可以工作在一些简单的情况下,这将带来更多的麻烦,而维护和处理角案件

使用:

输出将处理@kirmir提到的案例

<root>
    <notempty>text</notempty>
</root>

我找到了一种方法来删除所有有类或没有类的空标记

我找到的正则表达式解决方案是:

/]*>*|\s*

请看以下示例:

这是一个文本

该正则表达式只会删除Test2类


我希望这对你有帮助

我找到了一种方法来删除所有有类或没有类的空标记

我找到的正则表达式解决方案是:

/]*>*|\s*

请看以下示例:

这是一个文本

该正则表达式只会删除Test2类


我希望这对你有帮助

如果在清除空标签后,您得到新的空标签怎么办?也许将数据作为XML进行处理会更容易。空标记的优点很好。幸运的是,该结构将是平坦的,我只需要降低一点大小+1不管怎样。如果清除空标签后,您得到新的空标签怎么办?也许将数据作为XML进行处理会更容易。空标记的优点很好。幸运的是,该结构将是平坦的,我只需要降低一点大小+不管怎样,1+1表示很好的扩展。对于String.Empty。我的小姐。还有,我喜欢大写字母中的类名字符串,就像上帝有意的!对于这个简单的xml/html代码段+1进行良好的扩展,这是行不通的。对于String.Empty。我的小姐。还有,我喜欢大写字母中的类名字符串,就像上帝有意的!这不适用于这个简单的xml/html片段这不适用于这个简单的xml/html片段这不适用于这个简单的xml/html片段