自定义Regex代码中的Complementory

本文关键字:Complementory 代码 Regex 自定义 | 更新日期: 2023-09-27 18:28:17

目标:
在regex 的支持下,确保数据1和所有数据31都是正确的,数据4和所有数据7都是错误的

 Regex regexp = new Regex(@"^[a-zA-Z]:''.*$");

在C#中。

问题:
data6和data7应该是错误的,但它是正确的。

不知道如何解决。

    Regex regexp = new Regex(@"^[a-zA-Z]:''.*$");
    //Correct result
    string data1 = "C:''33''dd''Desktop''151222055438.txt";
    string data2 = "c:''ff''ded''Desktop''151222055438.txt";
    string data3 = "Z:''ss''gg''Desktop''151222055438.txt";
    string data31 = "d:''da''ds''Df''ff.txt";
    //Error result
    string data4 = "3:''rr''555''Desktop''151222055438.txt";
    string data5 = "d''33''4''Desktop''151222055438.txt";
    string data6 = "s:''''rr''d''Desktop''151222055438.txt";
    string data7 = "s:''''''f''f''Desktop''151222055438.txt";

    if (regexp.Match(data1).Success)
    {
        int correct = 23;
    }
    if (regexp.Match(data2).Success)
    {
        int correct = 23;
    }
    if (regexp.Match(data3).Success)
    {
        int correct = 23;
    }
    if (regexp.Match(data31).Success)
    {
        int correct = 23;
    }

    if (regexp.Match(data4).Success)
    {
        int error = 23;
    }
    if (regexp.Match(data5).Success)
    {
        int error = 23;
    }
    if (regexp.Match(data6).Success)
    {
        int error = 23;
    }
    if (regexp.Match(data7).Success)
    {
        int error = 23;
    }
    int sds = 23;

自定义Regex代码中的Complementory

这个问题是在回答您原来的问题时解决的。你只需要调整它以使用单反斜杠而不是双反斜杠:

var regexp = new Regex(@"^[a-zA-Z]:(''[^'']+)+$");

''匹配一个反斜杠(因为'在逐字逐句的字符串文字中并不特殊,但在正则表达式中是特殊的)。则[^'']+匹配除反斜杠之外的任何字符中的一个或多个;这是目录或文件名。

我对您的表达式进行了轻微的修改,使其变成如下:^[a-zA-Z]:(''{2}[a-zA-Z0-9.]+)+$(此处提供示例)。

在您的案例中,您似乎在明确地寻找成对的'字符,这就是''{2}所做的。此外,在成对的'之间,您似乎只接受字母和数字。最后,你似乎也在寻找时代人物。

试试这个

Regex regexp = new Regex(@"^[a-zA-Z]:(''{2}[a-zA-Z'd]+)+(''{2}['d]+)*.txt$");

如果您的文件扩展名为".txt",并且名称中只有数字,那么这可能会更好。

两个斜杠"''"的原因是表示反斜杠。因为它会将单个反斜杠视为转义字符。