【问题标题】:Using REGEX in if-elsif-else condition在 if-elsif-else 条件下使用 REGEX
【发布时间】:2017-04-12 06:30:18
【问题描述】:

我只想测试/ntest,然后输出是测试测试,但只将 /n 替换为一个空格,但在某些情况下 /r/n 也替换但不能替换为该 syatax 仅在两个单词之间替换,所以我返回此正则表达式语法但不起作用。

string input = "/r/ntest/ntest/n/r"
input = Regex.Replace(input, ".\n.", " ");

【问题讨论】:

  • 字符串输入 = "\r\ntest\ntest\n\r"; input = Regex.Replace(input, ".\n.", " ");
  • 1) 您的代码包含语法问题。 2) 你是什么意思/在做什么?

标签: c# asp.net regex


【解决方案1】:

我认为您必须向正则表达式提供条件,即您希望在 \n 之前存在非 \r 字符 - 但您必须将找到的非 \r 字符添加到替换字符串中否则会被剪掉:

Regex.Replace(input, @"(?<before>[^\r])\n", m => m.Groups["before"].Value + " ");

(?...) 定义了一个您可以稍后访问的命名组

[^\r] 定义这里存在一个不是 \r 的字符

m => m... 是一个 Lambda 表达式,这里的 m 是一个 Match 实例

在这种特定情况下,您也可以使用简单的替换来解决问题:

input = input.Replace("\r\n", "\r").Replace('\n', ' ').Replace("\r", "\r\n");

【讨论】:

  • 你的正则表达式可以写成Regex.Replace(input, @"(?&lt;!\r)\n", " ")
猜你喜欢
  • 2012-11-30
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
  • 1970-01-01
  • 2019-08-28
  • 2019-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多