Ziel:
Stellen Sie sicher, dass die Daten1 und der gesamte Weg zu data31 korrekt sind und data4 und der gesamte Weg zu data7 ein Fehler mit Unterstützung von Regex ist
Regex regexp = new Regex(@"^[a-zA-Z]:\\.*$");
In C #.
Problem:
data6 und data7 sollen fehlerhaft sein, aber stattdessen ist es korrekt.
Ich weiß nicht, wie ich es lösen soll.
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;
3 Antworten
Dieses Problem wurde in einer Antwort auf Ihre ursprüngliche Frage behoben. Sie müssen es nur anpassen, um mit einfachen statt doppelten Backslashes zu arbeiten:
var regexp = new Regex(@"^[a-zA-Z]:(\\[^\\]+)+$");
\\
entspricht einem einzelnen Backslash (da \
in einem wörtlichen Zeichenfolgenliteral nichts Besonderes ist, in einem regulären Ausdruck jedoch etwas Besonderes). Dann entspricht [^\\]+
einem oder mehreren Zeichen außer Backslash. Das ist das Verzeichnis oder der Dateiname.
Ich habe Ihren Ausdruck geringfügig geändert, sodass er wie folgt lautet: ^[a-zA-Z]:(\\{2}[a-zA-Z0-9.]+)+$
(Beispiel verfügbar hier).
In Ihrem Fall scheinen Sie explizit nach Paaren von \
Zeichen zu suchen, was das \\{2}
tut. Außerdem scheinen Sie zwischen den Paaren von \
nur Buchstaben und Zahlen zu akzeptieren. Am Ende scheinen Sie auch nach historischen Zeichen zu suchen.
Versuche dies
Regex regexp = new Regex(@"^[a-zA-Z]:(\\{2}[a-zA-Z\d]+)+(\\{2}[\d]+)*.txt$");
WENN Ihre Dateien die Erweiterung ".txt"
haben und nur Ziffern im Namen haben, funktioniert dies möglicherweise noch besser.
Der Grund für zwei Schrägstriche "\\"
ist ein Backslash. da es einen einzelnen Backslash als Escape-Zeichen betrachtet.
Verknüpfte Fragen
Neue Fragen
c#
C # (ausgesprochen "siehe scharf") ist eine statische Typisierungsprogrammiersprache mit mehreren Paradigmen, die von Microsoft entwickelt wurde. C # -Code zielt normalerweise auf die .NET-Tools und -Laufzeiten von Microsoft ab, zu denen unter anderem .NET Framework, .NET Core und Xamarin gehören. Verwenden Sie dieses Tag für Fragen zu Code, der in der formalen Spezifikation von C # oder C # geschrieben ist.