c# - 查找和替换 RegEx 问题

标签 c# regex replace find wildcard

感谢 SO 对我的其他问题的所有大力帮助,我开始掌握 RegEx。但我还是很讨厌这个:

我的代码是:

   StreamReader reader = new StreamReader(fDialog.FileName.ToString());
   string content = reader.ReadToEnd();
   reader.Close();


我正在阅读一个文本文件,我想搜索这个文本并更改它(X 和 Y 值在我的文本文件中总是相互跟随):

X17.8Y-1。

但是这个文本也可以是X16.1Y2.3(X和Y之后的值总是不同的)


我想改成这样

X17.8Y-1.G54
或者
X(值)Y(值)G54



我的 RegEx 语句如下,但它不起作用。

content = Regex.Replace(content, @"(X(?:\d*\.)?\d+)*(Y(?:\d*\.)?\d+)", "$1$2G54");


有人可以帮我修改它使其工作并搜索 X(wildcard) Y(Wildcard) 并将其替换为 X(value)Y(value)G54 吗?

最佳答案

你需要的正则表达式是:

X[-\d.]+Y[-\d.]+

以下是如何在 C# 中使用它:

string content = "foo X17.8Y-1. bar";
content = Regex.Replace(content, @"X[-\d.]+Y[-\d.]+", "$0G54");
Console.WriteLine(content);

输出:

foo X17.8Y-1.G54 bar

关于c# - 查找和替换 RegEx 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2806789/

相关文章:

c# - 如何创建一个连续循环的线程/任务?

bash - sed:替换一段文本

c# - 如何修复错误 "Cannot load PowerShell snap-in Microsoft.PowerShell.Diagnostics because of the following error: Could not load file or assembly"

基于 web 发布配置文件的 c# 预处理器指令

c# - 在iOS 5上使用MonoTouch不能使用OpenGL ES 1.1深度缓冲区

javascript - 如何否定捕获组?

javascript - 字符串的正则表达式 - 长度为 9,第三个字符字母和剩余数字

python - 将python字典转换为MATLAB

JAVA替换一个String,无需多次替换

BASH:用于替换文件树中文本的递归程序