c# 正则表达式 指定条件如何匹配

字符串:123\r\n"第一行\r\n第二行\r\n第三行\r\n第四行"\r\n"ABC\r\nDEF\r\nGHI"\r\n456,用正则表达式怎么将两个引号之间的\... 字符串:123\r\n"第一行\r\n第二行\r\n第三行\r\n第四行"\r\n"ABC\r\nDEF\r\nGHI"\r\n456,用正则表达式怎么将两个引号之间的\r\n替换成\n
即上式结果为:123\r\n"第一行\n第二行\n第三行\n第四行"\r\n"ABC\nDEF\nGHI"\r\n456
展开
 我来答
紫薇参星
科技发烧友

2019-03-04 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3584万
展开全部

按照你的要求,编写的程序如下

using System;

using System.Text.RegularExpressions;

namespace replacereturn{

 class ReplaceReturn{

  static void Main(string[] args){

   string str="123\r\n\"第一行\r\n第二行\r\n第三行\r\n第四行\"\r\n\"ABC\r\nDEF\r\nGHI\"\r\n456";

   MatchCollection mc =Regex.Matches(str,"(?s)\"(.+?)\"");

   foreach (Match m in mc){

    string result=m.Groups[1].Value.Replace("\r\n","\n");

    str=str.Replace(m.Groups[1].Value,result);

   }

   Console.WriteLine(str);

   Console.ReadKey();

  }

 }

}

如果你看不出效果,可以把回车换行替换成空字符串,那样你就会看到引号内的字符在一行上显示,引号外不变.

using System;

using System.Text.RegularExpressions;

namespace replacereturn{

 class ReplaceReturn{

  static void Main(string[] args){

   string str="123\r\n\"第一行\r\n第二行\r\n第三行\r\n第四行\"\r\n\"ABC\r\nDEF\r\nGHI\"\r\n456";

   MatchCollection mc =Regex.Matches(str,"(?s)\"(.+?)\"");

   foreach (Match m in mc){

    string result=m.Groups[1].Value.Replace("\r\n","");//这里替换为空字符串

    str=str.Replace(m.Groups[1].Value,result);

   }

   Console.WriteLine(str);

   Console.ReadKey();

  }

 }

}

l7722526
2019-03-03 · TA获得超过2.7万个赞
知道大有可为答主
回答量:2.8万
采纳率:84%
帮助的人:3760万
展开全部
使用Regex的Matches方法可以返回一个MatchCollection对象,这个对象返回了当前输入的所有匹配的集合 或者使用Match方法返回第一个匹配,他是一个Match对象,使用Value即可获取当前Match的匹配结果 如果有多个匹配可以继续调用Match对象的NextMatch得到下一个匹配Match对象,但是这个Match对象不一定匹配,可以调用Success获取当前Match对象是否匹配成功 如果想获取捕获组的内容,可以使用Match的Group获取,他是一个带索引器的集合,使用[0]获取匹配内容(也就是Match的Value),由[1]开始依次对应捕获组的编号
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式