自定义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;
这个问题是在回答您原来的问题时解决的。你只需要调整它以使用单反斜杠而不是双反斜杠:
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"
,并且名称中只有数字,那么这可能会更好。
两个斜杠"''"
的原因是表示反斜杠。因为它会将单个反斜杠视为转义字符。