我有各种标签,例如<nav class="filters">XXX</nav>
和<!-- Google Tag Manager --> XXX <!-- End Google Tag Manager -->
我想搜索和替换但是还没有能够这样做。此时没有任何替换,但我可能需要更换一些文字
我尝试过使用以下功能,但它不起作用。请指教!
<nav class="filters">(.*?)</nav> or <nav class=\"filters\">(.*?)</nav>
似乎我没有让它显而易见,但不确定它会变得多么简单: - (
如果它在一行上似乎有用,但在下面的多个时,它不会
<nav class="filters">
STRING CONTENT
</nav>
答案 0 :(得分:0)
Janusz,这些简单的正则表达式会做你想要的。
第一个:搜索
(?is)<nav class="filters">[^<]*</nav>
对于第二个:搜索
(?is)<!-- Google Tag Manager -->[^<]*<!-- End Google Tag Manager -->
示例:强>
using System;
using System.Text.RegularExpressions;
class Program {
static void Main() {
string resultString = null;
string s1 = @"string was here>>> <nav class=""filters"">
STRING CONTENT
</nav> <<< string was here";
string s2 = Regex.Replace(s1, "(?is)<nav class=\"filters\">[^<]*</nav>", "");
Console.WriteLine(s2);
Console.WriteLine("\nPress Any Key to Exit.");
Console.ReadKey();
} // END Main
} // END Program
输出:
string was here>>> <<< string was here
[^<]*
将占用任何数量不是<
的字符,包括换行符,这是您的问题。
使用.*
点星语法,您也可以吃掉换行符,但只能设置(?s)
“点匹配换行符”标志。但一般情况下,只要更具体的东西可以避免点星,我们就会这样做,因此选择[^<]*
请注意""filters""
中的双引号与正则表达式无关。你可能知道这一点,但是两个双引号是你如何以逐字字符串的形式转义双引号。