c#regex拆分或替换。这是我的代码

时间:2014-07-14 12:03:46

标签: regex replace

我正在尝试将某个群体替换为""使用正则表达式。

我正在寻找并尽力而为,但它超越了我的头脑。

我想做的是,

string text = "(12je)apple(/)(jj92)banana(/)cat";
string resultIwant = {apple, banana, cat};

在第一个方括号中,必须有4个字符,包括数字。 和'(/)'将会结束。

这是我的代码。 (我正在使用匹配功能)

string text= @"(12dj)apple(/)(88j1)banana(/)cat";
string pattern = @"\(.{4}\)(?<value>.+?)\(/\)";

Regex rex = new Regex(pattern);
MatchCollection mc = rex.Matches(text);
if(mc.Count > 0)
{
  foreach(Match str in mc)
  {
    print(str.Groups["value"].Value.ToString());
  }
}

然而,结果是 苹果 香蕉

所以我认为我应该使用替换或其他东西而不是匹配。

1 个答案:

答案 0 :(得分:1)

以下正则表达式会捕获紧跟)

之后的单词字符
(?<=\))(\w+)

DEMO

您的c#代码将是,

{
  string str = "(12je)apple(/)(jj92)banana(/)cat";
  Regex rgx = new Regex(@"(?<=\))(\w+)");
  foreach (Match m in rgx.Matches(str))
  Console.WriteLine(m.Groups[1].Value);
}

IDEONE

<强>解释

  • (?<=\))这里使用了正向观察。它将匹配标记设置在)符号后面。
  • ()捕获群组。
  • \w+然后它会捕获所有以下单词字符。它不会捕获以下(符号,因为它不是单词字符。