AppSettings 标签的正则表达式删除评论标签
Regular Expression for AppSettings Tags Removing commented tags
我想创建一个正则表达式,它应该只给我那些没有注释的 appsettings 标签。以下是测试字符串。
<a key="a" value="b"/><b key="b" value="b"/><!--<c key="c" value="c"/>-->
<d key="d" value="d"/>
到目前为止我已经想出了以下正则表达式。
(?<!<!--)<[^>]*/+>
她我正在测试
的负面前瞻
<!--
但它不起作用。任何想法。
这是另一个应用垃圾桶方法的好机会:我们想要的一切都进入第一个捕获组,其余的进入整体匹配,将被完全忽略。
实现这一目标的正则表达式可能如下所示:
<!--.*?-->|(<\s*\w+[^>]*>)
解释:
<!--.*?-->
第一个交替匹配 HTML 评论块和 lazy 之间的所有内容
(<\s*\w+[^>]*>)
第二个匹配任何简单的 XHTML 标签
所以,只有当 </code> 中有一个值时,我们才会记录它。</p>
<p><a href="https://ideone.com/6LXkuq" rel="nofollow noreferrer">Sample Code</a>:</p>
<pre><code>using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"<!--.*?-->|(<\s*\w+[^>]*>)";
string input = @"<a key=""a"" value=""b""/><b key=""b"" value=""b""/><!--<c key=""c"" value=""c""/>-->
<d key=""d"" value=""d""/>";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
if(m.Groups[1].Success)
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
另一种可以实现类似效果的模式是使用否定环视来断言评论标签:
(?<!<!--)(<\s*\w+[^>]*>)(?!-->)
我想创建一个正则表达式,它应该只给我那些没有注释的 appsettings 标签。以下是测试字符串。
<a key="a" value="b"/><b key="b" value="b"/><!--<c key="c" value="c"/>-->
<d key="d" value="d"/>
到目前为止我已经想出了以下正则表达式。
(?<!<!--)<[^>]*/+>
她我正在测试
的负面前瞻<!--
但它不起作用。任何想法。
这是另一个应用垃圾桶方法的好机会:我们想要的一切都进入第一个捕获组,其余的进入整体匹配,将被完全忽略。
实现这一目标的正则表达式可能如下所示:
<!--.*?-->|(<\s*\w+[^>]*>)
解释:
<!--.*?-->
第一个交替匹配 HTML 评论块和 lazy 之间的所有内容
(<\s*\w+[^>]*>)
第二个匹配任何简单的 XHTML 标签
所以,只有当 </code> 中有一个值时,我们才会记录它。</p>
<p><a href="https://ideone.com/6LXkuq" rel="nofollow noreferrer">Sample Code</a>:</p>
<pre><code>using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"<!--.*?-->|(<\s*\w+[^>]*>)";
string input = @"<a key=""a"" value=""b""/><b key=""b"" value=""b""/><!--<c key=""c"" value=""c""/>-->
<d key=""d"" value=""d""/>";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
if(m.Groups[1].Success)
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
另一种可以实现类似效果的模式是使用否定环视来断言评论标签:
(?<!<!--)(<\s*\w+[^>]*>)(?!-->)