我有以下字符串:
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));
要删除的字符串应与括号内的数字以及后面的所有文本匹配。
答案 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];