2014-04-27 39 views
0

我有各种标签,如<nav class="filters">XXX</nav><!-- Google Tag Manager --> XXX <!-- End Google Tag Manager -->我想搜索和替换,但一直未能这样做。此时替换为无,但我可能需要更换一些文字查找两个标签之间的内容

我试过使用下面,但它不起作用。请指教!

<nav class="filters">(.*?)</nav> or <nav class=\"filters\">(.*?)</nav> 

好像我没能足够明显,但不知道是多么更加简单:-(

它似乎工作,如果是在同一行,但是当多个类似下面,它不“T

<nav class="filters"> 
STRING CONTENT 
</nav> 
+0

什么不工作? –

+0

呃...我的正则表达式来找到我需要的东西 – pee2pee

+0

你想捕捉什么?并用什么取代? – sshashank124

回答

0

雅努什,这些简单的正则表达式会做你想要什么

对于第一个:搜索

(?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""双双引号什么都没有做的正则表达式。你可能知道这一点,但两个双引号是你如何在逐字字符串中避免双引号。

+0

我结束了使用记事本+ – pee2pee

+0

@JanuszJasinski伟大的,N + +,为什么不。你用我给你的正则表达式吗? – zx81