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

本文关键字:获取 单词 正则表达式 | 更新日期: 2023-09-27 18:21:22

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

这就是我尝试过的

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

返回如下关于时间p

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

如果您想不使用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] 只接受所有字符都是字母的单词
[3] 用空格作为分隔符将它们连接回来

您可以使用''b 检查单词boundaries

'b[a-zA-Z]+'b

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

此处的示例

string myString="About Time (2013) [1080p]";
Regex.Replace(myString, @"'S*[^a-zA-Z's]'S*", "");
private static string FilterTest(string input) => string
                      .Join(" ", (new Regex(@"[a-z]+",RegexOptions.IgnoreCase))
                      .Matches(input)
                      .Cast<Match>().Select(e => e.Value));