正则表达式清洁绳

时间:2018-12-26 15:06:28

标签: c# regex string

我有以下字符串:

Fox jumps over the rope (1):AB 123

我正在尝试在C#中使用Regex进行清理。我需要像这样:

Fox jumps over the rope

我无法使用正则表达式匹配此字符串

string badstring = "Fox jumps over the rope (1):AB 123";
string goodstring = Regex.Replace(strIn, @"[^\w\.@-]", "",
                                 RegexOptions.None, TimeSpan.FromSeconds(1.5));

要删除的字符串应与括号内的数字以及后面的所有文本匹配。

4 个答案:

答案 0 :(得分:2)

如果要删除后缀(在示例中为"(1):AB 123"),则可以尝试使用 Linq 代替正则表达式:在TakeWhile的帮助下,我们将获取所有必需的字符,直到出现后缀。

  using System.Linq;

  ...

  string raw = "Fox jumps over the rope (1):AB 123";

  // "Fox jumps over the rope "
  string cleared = string.Concat(raw
    .TakeWhile(c => char.IsLetter(c) || char.IsWhiteSpace(c)));

答案 1 :(得分:1)

您可以使用

Regex.Replace(badstring, @"\s*\(\d+\).*", "")

\s*\(\d+\).*正则表达式匹配

  • \s*-0 +空格字符
  • \(\d+\)-一个(,然后是1个以上的数字,)
  • .*-该行的其余部分。

Regex.Replace用一个空字符串替换所有不重叠的内容。

答案 2 :(得分:0)

    String Pattern = "[^a-zA-Z\\s]+[a-zA-Z]*";
    String StringToClean = "Fox jumps over (1):AB 123 the rope (1):AB 123";
    String StringCleaned = Regex.Replace(StringToClean, @Pattern, "");
    String Cleaned = Regex.Replace(StringCleaned, @"[\s]+", " ");
    Console.WriteLine(Cleaned);
  

结果=福克斯跳过了绳子

经过RegexStorm测试 已在C#中测试:Snippet

答案 3 :(得分:0)

var s = "Fox jumps over the rope (1):AB 123";
var x = s.Substring(0, s.IndexOf("(") - 1);
// or: var x = s.Split(" (")[0];