请问正则表达式的替换构造

wang_solaris 2003-08-21 10:21:57
Regex r = new Regex("(?<name>NIL)");
Match m = r.Match("NIL abc 123 NIL abc");
string s = m.Result("${name}");

这里的s会得到"NIL"。现在我想通过修改正则表达式使得返回的s为空字符串"",
即只要碰到"NIL",就在此处匹配一个空字符串。

请问这里的正则表达式(?<name>NIL)该怎么修改。
...全文
24 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang_solaris 2003-08-22
  • 打赏
  • 举报
回复
OK!谢谢!您可帮了我的大忙了 *^-^*
saucer 2003-08-22
  • 打赏
  • 举报
回复
string[] slist = {"abc(NIL)", "abc(\"abc abc\")"};

Regex r = new Regex(@"abc\s*\(\s*(?:(?<name>)NIL|(?<name>""[^""]*""))\s*\)");

foreach (string s in slist)
{
Match m = r.Match(s);
if (m.Success)
{
string s2 = m.Result("${name}");
Console.WriteLine("{0}--->{1}", s, s2);
}
}
wang_solaris 2003-08-22
  • 打赏
  • 举报
回复
saucer(思归, .NET MVP)先生你好,

我的意思是这样的:我有一个字符串,是abc(xxx)这种形式,括号里面的东西可能是NIL,也可能是一个用双引号括起来的字符串,比如abc(NIL)或者abc("abc abc")。现在我要匹配这个东西,如果括号中是双引号括起来的字符串,我想得到这个字符串;如果是NIL,我想得到一个空字符串。

就这样一个问题,请指教!谢谢
saucer 2003-08-21
  • 打赏
  • 举报
回复
string s = "NIL abc 123 NIL abc";
s = s.Replace("NIL","");

or

s = Regex.Replace(s,@"NIL","");

or do you mean ??
Regex r = new Regex(@"(?<name>)NIL");
Match m = r.Match("NIL abc 123 NIL abc");
if (m.Success)
{
string s = m.Result("${name}");
Console.WriteLine(s);
}

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧