使用 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# 使用正则表达式过滤掉字母 [重复]的主要内容,如果未能解决你的问题,请参考以下文章