2012-02-23 105 views
1

我需要替换以%开头的单词。正则表达式拆分和替换

例如Welcome to home | %brand %productName

希望拆就话与% begining这会给我{ brand, productName }

我的正则表达式低于平均水平,所以将不胜感激。

+0

这将是,如果你使用%品牌更容易% %productName% – Christophe 2012-02-23 07:26:22

+0

您是否试图获得仅包含“brand”和“productName”的数组,或者您是否试图替换这些词,如果是的话,您试图将它们替换为什么? – 2012-02-23 08:00:51

+0

如果您有想要的解决方案,请不要忘记标记答案 – 2012-02-23 10:58:11

回答

1

没有错string.split办法,你要知道,但这里有一个正则表达式的方法:

string input = @"Welcome to home | %brand %productName"; 
      string pattern = @"%\S+"; 
      var matches = Regex.Matches(input, pattern); 
      string result = string.Empty; 
      for (int i = 0; i < matches.Count; i++) 
      { 
       result += "match " + i + ",value:" + matches[i].Value + "\n"; 
      } 
      Console.WriteLine(result); 
+0

感谢这就是我一直在寻找。需要刷上我的正则表达式。我以前使用string.split方法,但正在寻找一种不太麻烦的方法。再次感谢 – Christo 2012-02-23 13:11:41

0

试试这个:

(?<=%)\w+ 

这看起来对于立即百分比符号开头的字字符的任意组合。现在

,如果你正在做的搜索,并在这些比赛代替,你可能想要删除%符号一样,所以你需要删除的回顾后组,只有这个:

%\w+ 

但是这样做,您的替换代码将需要修剪每个匹配的%符号以获取单词。

+3

您可以使用'%(\ w +)'来匹配组并替换所需的任何内容。 – 2012-02-23 07:23:19

2

下面的代码可以帮助你:

string[] splits = "Welcome to home | %brand %productName".Split(' '); 
List<string> lstdata = new List<string>(); 
for(i=0;i<splits.length;i++) 
{ 
    if(splits[i].StartsWith("%")) 
    lstdata.Add(splits[i].Replace('%','')); 
}