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 展开
即上式结果为:123\r\n"第一行\n第二行\n第三行\n第四行"\r\n"ABC\nDEF\nGHI"\r\n456 展开
2个回答
展开全部
按照你的要求,编写的程序如下
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();
}
}
}
展开全部
使用Regex的Matches方法可以返回一个MatchCollection对象,这个对象返回了当前输入的所有匹配的集合 或者使用Match方法返回第一个匹配,他是一个Match对象,使用Value即可获取当前Match的匹配结果 如果有多个匹配可以继续调用Match对象的NextMatch得到下一个匹配Match对象,但是这个Match对象不一定匹配,可以调用Success获取当前Match对象是否匹配成功 如果想获取捕获组的内容,可以使用Match的Group获取,他是一个带索引器的集合,使用[0]获取匹配内容(也就是Match的Value),由[1]开始依次对应捕获组的编号
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询