我正在尝试将某个群体替换为""使用正则表达式。
我正在寻找并尽力而为,但它超越了我的头脑。
我想做的是,
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());
}
}
然而,结果是 苹果 香蕉
所以我认为我应该使用替换或其他东西而不是匹配。
答案 0 :(得分:1)
以下正则表达式会捕获紧跟)
,
(?<=\))(\w+)
您的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);
}
<强>解释
(?<=\))
这里使用了正向观察。它将匹配标记设置在)
符号后面。()
捕获群组。\w+
然后它会捕获所有以下单词字符。它不会捕获以下(
符号,因为它不是单词字符。