200分, 请教C#中一个正则匹配(或者替换)的写法

Jeremiah 2014-12-30 11:43:30
现有字符串:
"你好, \我是需要被替换的\"字符串\", 我叫\'李四\', \\."

需要的结果为:
"你好, \\我是需要被替换的\"字符串\", 我叫\'李四\', \\."

因为 \", \', \\已经是转义过的字符了, 所以不必再替换. 而\需要替换为\\.

如果用正则, 可以实现吗? 应该如何解?
...全文
154 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ajaxfeifei 2014-12-30
  • 打赏
  • 举报
回复
引用 1 楼 lc2737 的回复:

正则表达式:\\(?![",\\,',\.])

自己做一个正则表达式的小工具。
q107770540 2014-12-30
  • 打赏
  • 举报
回复
或许这样你看r更清楚一些:
	string s="你好, \\我是需要被替换的\\\"字符串\\\", 我叫\\\'李四\\\', \\\\.";
	Console.WriteLine("替换前: "+s);
	s= Regex.Replace(s,@"\\(?!['""\\.])","\\\\");
	Console.WriteLine("替换后: "+s);
	
	/*
	替换前: 你好, \我是需要被替换的\"字符串\", 我叫\'李四\', \\.
	替换后: 你好, \\我是需要被替换的\"字符串\", 我叫\'李四\', \\.
	*/
q107770540 2014-12-30
  • 打赏
  • 举报
回复
void Main()
{
	string s="你好, \\我是需要被替换的\"字符串\", 我叫\'李四\', \\.";
	Console.WriteLine("替换前: "+s);
	s= Regex.Replace(s,@"\\(?!['""\\.])","\\\\");
	Console.WriteLine("替换后: "+s);
	
	/*
	替换前: 你好, \我是需要被替换的"字符串", 我叫'李四', \.
	替换后: 你好, \\我是需要被替换的"字符串", 我叫'李四', \.
	*/
}
Sq-Zyz123 2014-12-30
  • 打赏
  • 举报
回复
up 一下200份
o_range 2014-12-30
  • 打赏
  • 举报
回复
200分的问题,进来膜拜一下
ajaxfeifei 2014-12-30
  • 打赏
  • 举报
回复

正则表达式:\\(?![",\\,',\.])
Jeremiah 2014-12-30
  • 打赏
  • 举报
回复
先结贴, 学习一下正则, 有问新发贴再请求. 谢谢~
ajaxfeifei 2014-12-30
  • 打赏
  • 举报
回复
给大家解释一下正则表达式的意思:

(?!exp)匹配后面跟的不是exp的位置
(?<!exp)匹配前面不是exp的位置
ajaxfeifei 2014-12-30
  • 打赏
  • 举报
回复
引用 10 楼 w59879213 的回复:
[quote=引用 4 楼 q107770540 的回复:]
void Main()
{
	string s="你好, \\我是需要被替换的\"字符串\", 我叫\'李四\', \\.";
	Console.WriteLine("替换前: "+s);
	s= Regex.Replace(s,@"\\(?!['""\\.])","\\\\");
	Console.WriteLine("替换后: "+s);
	
	/*
	替换前: 你好, \我是需要被替换的"字符串", 我叫'李四', \.
	替换后: 你好, \\我是需要被替换的"字符串", 我叫'李四', \.
	*/
}
不好意思, 再咨询一下. 如果双斜线是在中间的情况, 正则应该如何修改呢? 替换前: 你好, \我是需要被替换的\"字符串\", 我叫\'李四\', 我是不需要替换的\\字符串. 替换后: 你好, \\我是需要被替换的\"字符串\", 我叫\'李四\', 我是不需要替换的\\字符串.[/quote] 使用如下表达式即可:已经测试过。

(?<!\\)\\(?!["\\'\.])
Jeremiah 2014-12-30
  • 打赏
  • 举报
回复
引用 11 楼 lc2737 的回复:
[quote=引用 9 楼 q107770540 的回复:] [quote=引用 1 楼 lc2737 的回复:]

正则表达式:\\(?![",\\,',\.])
正则语法中 [] 表区间范围,没必要写这么多逗号吧。。。[/quote] 多谢指正,确实如此。[/quote] 不好意思, 同样也再咨询一下. 如果双斜线是在中间的情况, 正则应该如何修改呢? 替换前: 你好, \我是需要被替换的\"字符串\", 我叫\'李四\', 我是不需要替换的\\字符串. 替换后: 你好, \\我是需要被替换的\"字符串\", 我叫\'李四\', 我是不需要替换的\\字符串.
q107770540 2014-12-30
  • 打赏
  • 举报
回复
	string s="你好, \\我是需要被替换的\\\"字符串\\\", 我叫\\'李四\\', 我是不需要替换的\\\\字符串.";
	Console.WriteLine("替换前: "+s);
	s= Regex.Replace(s,@"(?<!\\)\\(?!['""\\.])","\\\\");
	Console.WriteLine("替换后: "+s);
	
	/*
	替换前: 你好, \我是需要被替换的\"字符串\", 我叫\'李四\', 我是不需要替换的\\字符串.
	替换后: 你好, \\我是需要被替换的\"字符串\", 我叫\'李四\', 我是不需要替换的\\字符串.
	*/
ajaxfeifei 2014-12-30
  • 打赏
  • 举报
回复
引用 9 楼 q107770540 的回复:
[quote=引用 1 楼 lc2737 的回复:]

正则表达式:\\(?![",\\,',\.])
正则语法中 [] 表区间范围,没必要写这么多逗号吧。。。[/quote] 多谢指正,确实如此。
Jeremiah 2014-12-30
  • 打赏
  • 举报
回复
引用 4 楼 q107770540 的回复:
void Main()
{
	string s="你好, \\我是需要被替换的\"字符串\", 我叫\'李四\', \\.";
	Console.WriteLine("替换前: "+s);
	s= Regex.Replace(s,@"\\(?!['""\\.])","\\\\");
	Console.WriteLine("替换后: "+s);
	
	/*
	替换前: 你好, \我是需要被替换的"字符串", 我叫'李四', \.
	替换后: 你好, \\我是需要被替换的"字符串", 我叫'李四', \.
	*/
}
不好意思, 再咨询一下. 如果双斜线是在中间的情况, 正则应该如何修改呢? 替换前: 你好, \我是需要被替换的\"字符串\", 我叫\'李四\', 我是不需要替换的\\字符串. 替换后: 你好, \\我是需要被替换的\"字符串\", 我叫\'李四\', 我是不需要替换的\\字符串.
q107770540 2014-12-30
  • 打赏
  • 举报
回复
引用 1 楼 lc2737 的回复:

正则表达式:\\(?![",\\,',\.])
正则语法中 [] 表区间范围,没必要写这么多逗号吧。。。
Jeremiah 2014-12-30
  • 打赏
  • 举报
回复
多谢~ 调试一下, 一会答复~
【顶级EI完美复现】电力系统碳排放流的计算方法【IEEE 14节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE 14节点电力系统的碳排放流计算方法,并提供了Matlab代码实现,属于顶级EI期刊级别的研究成果复现。该方法通过建立电力系统各节点的碳排放流动模型,结合潮流计算与电源出力特性,量化不同机组和线路的碳排放责任,进而实现对电力系统低碳运行的评估与优化。文详细阐述了算法原理、数学模型构建及仿真步骤,适用于电力系统低碳化析与碳足迹追踪研究。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及从事能源系统低碳化研究的专业技术人员,尤其适合致力于高水平论文复现与算法开发的研究者。; 使用场景及目标:①用于电力系统碳排放流的精确建模与可视化析;②支撑“双碳”背景下电网低碳调度、绿色电力溯源与碳配额配等应用场景;③为撰写高水平学术论文(如EI/SCI)提供可复现的技术路径与代码基础。; 阅读建议:建议读者结合IEEE 14节点系统标准数据,逐步运行并调试所提供的Matlab代码,深入理解碳流配逻辑与矩阵运算实现方式,同时可拓展至其他节点系统以验证算法通用性。

111,120

社区成员

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

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

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