【问题标题】:C# Regex Issues? [closed]C# 正则表达式问题? [关闭]
【发布时间】:2015-05-22 20:54:07
【问题描述】:

我在 C# 中使用正则表达式来清理格式严重的 .csv 文件。这些正则表达式是:

text = text.Replace("\n", "");
text = text.Replace("\t", "");       
text = new Regex("([a-z,A-Z,0-9])$\r").Replace(text, "$1 ");
text = new Regex("([a-z,A-Z,0-9]) ").Replace(text, "");
text = new Regex(" $\r").Replace(text, "");
text = new Regex("([,.]$\r)").Replace(text, "");

这些正则表达式在 Notepad++ 中完美地工作,以检测有问题的字符串并用空格替换它们。但是,一旦我在 C# 中使用它们,格式的主要错误仍然存​​在。我假设我错过了一些关于正则表达式在 C# 中的工作方式的东西。请指教。

【问题讨论】:

  • 你是在转义你的 \'s 还是在你的字符串上使用 @ 符号?
  • 您能告诉我们您是如何在 C# 代码中使用它的吗?一个 sn-p 的代码会让你更容易回答。
  • @Walker 添加。但是有些正则表达式是多余的,因为我认为我很傻。
  • 如果没有任何示例输入、预期输出和实际输出示例,很难为您提供帮助。理想情况下,准确计算出哪些正则表达式没有达到您的预期,并提供一个简短但完整的程序来证明这一点。在您这样做之前,这个问题太模糊而无法回答。
  • @RyanJ 你能澄清一下吗?我最初使用 \\s 来描述空格,但我发现我在该实例中专门寻找空格,所以我只使用了文字空格。

标签: c# regex expression notepad++


【解决方案1】:

您的字符串文字很可能不是您认为的那样。在 C# 中,有以 \ 开头的转义序列,您希望以 @ 为前缀的“逐字字符串文字”来避免这些。

string s1 = "ham\n"; // Ends with a newline because of escape sequence.
string s2 = @"ham\n"; // Properly ends with \n because ampersand indicates verbatim

你可以在这里阅读:

https://msdn.microsoft.com/en-us/library/aa691090%28v=vs.71%29.aspx

【讨论】:

  • 请注意,这是一个古老的链接。如果我找到了一个完全等价的,我会用现代的代替它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多