5

我想知道 Regex 是否有任何方法可以接受与给定字符集相关的字符,同时否定其他几个字符?

例如,考虑我想要接受\w除 lettere和 digit之外的所有字符、数字和下划线 () 的情况1。有没有一种快速的方法可以做到这一点?理想情况下,我会喜欢类似于 的东西^[\w^e1]$,尽管我知道这个特定的东西行不通。

4

2 回答 2

6

您可以通过字符类减法来实现这一点:

[base_group - [excluded_group]]

使用这种格式,该模式^[\w-[e1]]$可用于匹配除字母e和数字之外的所有字母数字字符1

string[] inputs = 
{
    "a", "b", "c", "_", "2", "3",
    " ", "1", "e"   // false cases
};
string pattern = @"^[\w-[e1]]$";
foreach (var input in inputs)
{
    Console.WriteLine("{0}: {1}", Regex.IsMatch(input, pattern), input);
}
于 2013-03-05T00:32:28.140 回答
0

比 Ahmad 的解决方案更便携但不太简洁的方法是只定义一个排除eand的字符类1

[a-df-zA-DF-Z02-9]

应该按预期工作。

于 2013-03-05T00:39:39.390 回答