日期:2014-05-17  浏览次数:20849 次

请教正则给TXT文本插入符号问题
给txt文件里所有的数字前后插入|符号,  我用regex.replace只能做到把匹配的数字替换掉,不能在匹配的数字前后加|。小弟的基础很差,没有系统学C#的,只是需要用什么就看什么,希望各位大侠可以给详细点的代码,谢谢

------解决方案--------------------
string test = Regex.Replace("abc1def2ghijk34mn", @"(?is)(?<=\d)
------解决方案--------------------
(?=\d)", "
------解决方案--------------------
");

------解决方案--------------------

            string source = "abc1def2ghijk34mn";
            Regex reg = new Regex(@"(?is)([\d]+)");
            source = reg.Replace(source, @",$1,");
//source = "abc,1,def,2,ghijk,34,mn"

------解决方案--------------------
首先说下我的方法没有2楼简洁  建议用2楼的
先回答你的问题  要连续的话我1楼的做法这样修改
string test = Regex.Replace("abc1def2ghijk34mn", @"(?is)(?=[^\d])(?<=\d)
------解决方案--------------------
(?=\d)(?<=[^\d])", "
------解决方案--------------------
");


2楼不加@的话 正则表达式里的特殊字符就要自己用斜杠转义了  为什么不用@呢
这是不加@的情况
string source = "abc1def2ghijk34mn";
Regex reg = new Regex("(?is)([\\d]+)");
source = reg.Replace(source, ",$1,");

------解决方案--------------------
结帖也可以回复,只不过关注的人就不多了

@的作用是忽略转义,不加@的写法
Regex reg = new Regex("\\d+");
string result = reg.Replace(yourStr, @"
------解决方案--------------------
$0
------解决方案--------------------
");


PS:上面用到的(?is)在这里是不需要的
------解决方案--------------------
string msg = "hello12fdsa3jkfdsf432324sdfdsafds";
            msg = Regex.Replace(msg, @"(\d+)", ",$1,");
            Console.WriteLine(msg);
            Console.ReadKey();