使用 C# 使用正则表达式过滤掉字母 [重复]

Posted

技术标签:

【中文标题】使用 C# 使用正则表达式过滤掉字母 [重复]【英文标题】:Filter out alphabetic with regex using C# [duplicate] 【发布时间】:2012-11-03 22:04:40 【问题描述】:

可能重复:Regex - Only letters?

我尝试从文本中过滤掉字母 ([a-z],[A-Z])。

我试过"^\w$",但它会过滤字母数字(字母和数字)。

过滤掉字母的模式是什么?

谢谢。

【问题讨论】:

【参考方案1】:

要删除所有字母,试试这个:

void Main()

    var str = "some junk456456%^&%*333";
    Console.WriteLine(Regex.Replace(str, "[a-zA-Z]", ""));

【讨论】:

String.Replace 或 Regex.Replace ? 更新为所要求的语言并且有意义。 太棒了!谢谢。你能解释一下你做了什么吗?【参考方案2】:

要过滤多个字母字符,请使用

^[a-zA-Z]+$

【讨论】:

它测试了谢谢,但它不是过滤了吗?我的意思是,它过滤一切,但这个? (a-zA-Z) @user1798362 你的问题暗示\w 做了你想要的,但对于字母数字,所以如果你得到答案只是用“alpha”替换“alphanumerics”而不神奇地知道还有什么可能你的代码有问题。 不确定我是否理解。您要选择 除了 个字母字符之外的所有内容吗?【参考方案3】:

为了过滤 out 只有英文字母使用:

[^a-zA-Z]+

用于过滤 字母,无论使用何种语言:

[^\pL]+

如果您想反转效果,请删除左括号后面的帽子^

如果您想找到与模式匹配的整行,请将上述模式括在^$ 符号中,否则你不需要它们 .请注意,要使它们对每一行生效,您需要创建 Regex 对象并启用多行选项。

【讨论】:

使用 Sublime Text 2 第一个示例按描述工作,但第二个示例没有。不知道这是否是 ST2 中正则表达式引擎的怪癖。 正则表达式引擎之间可能存在差异。我已经使用基于 .NET 的引擎 RegexHero 对它们进行了测试,它们按预期工作。 我也在 Notepad++ 中测试过它们,它们在那里也能正常工作。 +1 为正确答案。有关信息:您不需要将 Unicode 属性放入否定字符类[^\pL],您只需将\PL 与大写P 一起编写即可获得否定版本。 @stema 谢谢。每天学习新东西。【参考方案4】:

试试这个简单的方法:

var result = Regex.Replace(inputString, "[^a-zA-Z\s]", "");

解释:

+ 匹配前一个元素一次或多次。

[^character_group] 否定:匹配任何不在 character_group 中的单个字符。

\s 匹配任何空白字符。

【讨论】:

以上是关于使用 C# 使用正则表达式过滤掉字母 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript正则表达式过滤两个字符之间的文本[重复]

使用正则表达式过滤文本

如何使用正则表达式过滤掉 c 类型的注释? [复制]

如何使用正则表达式过滤掉任何没有逗号的东西?

正则表达式匹配字母字符[重复]

C# 使用正则表达式过滤多行双引号字符串