如何在C#中编写正则表达式以仅获取字母单词

时间:2015-11-10 08:35:16

标签: c# regex string

如何在C#中编写正则表达式,只获取未与数字,特殊字符连接的字母单词。
我有以下文字" 关于时间(2013)[1080p] "并希望输出如关于时间

这是我试过的

string myString="About Time (2013) [1080p]";
Regex.Replace(myString, @"[^a-zA-Z]+", " ");

它会像关于时间p

一样返回

4 个答案:

答案 0 :(得分:1)

如果您不想Regex

string myString = "About Time (2013) [1080p]";
var words = myString.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
var alphaWords = string.Join(" ", words.Where(w => w.All(Char.IsLetter)));

它做的是

[1]将字符串拆分为单词(以空格分隔)
[2]仅取所有字符为letter的单词 [3]用空格作为分隔符加入它们

答案 1 :(得分:1)

你可以用\ b

检查bounderies这个词
\b[a-zA-Z]+\b

但是这样你仍然可以找到圆括号或方括号的单词

example here

答案 2 :(得分:0)

string myString="About Time (2013) [1080p]";
Regex.Replace(myString, @"\S*[^a-zA-Z\s]\S*", "");

答案 3 :(得分:0)

private static string FilterTest(string input) => string
                      .Join(" ", (new Regex(@"[a-z]+",RegexOptions.IgnoreCase))
                      .Matches(input)
                      .Cast<Match>().Select(e => e.Value));