Wie schreibe ich ein Suchmuster, um ein Leerzeichen in findstr einzufügen?
Will ich Suche alle Dateien in einem bestimmten Verzeichnis zum vorkommen von Aussagen wie
Load frmXYZ
Ich bin auf Windows 7, mit der findstr
Befehl. Ich habe versucht:
findstr /n Load.*frm *.*
Aber das gibt mir unerwünschte Ergebnisse wie:
If ABCFormLoaded Then Unload frmPQR
Also habe ich ein blankspace zwischen Load
und frm
und gab den Befehl wie diesen:
findstr /n Load frm *.*
Aber diese einfach gesucht werden alle vorkommen des Wortes load
oder alle vorkommen des Wortes frm
. Wie kann ich dieses problem umgehen?
InformationsquelleAutor der Frage CodeBlue | 2012-03-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Leerzeichen verwenden, müssen Sie die
/C:
option übergeben werden, die die Zeichenfolge(string s), um die regex/R
option.Sobald die wird es an der regex, ist es als regulärer Ausdruck behandelt.
Sagte, das ist typisch MS Papierkorb.
Zwei regex-Suchmuster
Die Quintessenz ist, dass Sie müssen verwenden 2 strings zu behandeln Fälle, in denen
Load frm
ist am Anfang etwa so:Load frm apples bananas carrots
ODER in der Mitte etwa so:
some other text Load frm and more
.Version ohne Charakter-Klassen
Unten ist mit XP sp3, windows 7 kann unterschiedlich sein, beide sind Müll!
findstr /N /R /C:" *Load *frm" /C:"^Load *frm" test.txt
Geist der Doppelpunkt
HINWEIS: Dem Doppelpunkt in
/C:
ist ZWINGEND erforderlich für diese zu arbeiten.Wenn man den Doppelpunkt dann
findstr
's die Fehlerbehandlung ist nur zur Behandlung von/C
als eine ungültige option ignorieren, dass ungültige option und go ahead sowieso. Was zu unerwarteten und unerwünschten output.Entsprechende version mit Charakter-Klassen
findstr /N /R /C:"[ ][ ]*Load[ ][ ]*frm" /C:"^Load[ ][ ]*frm" test.txt
Charakter-Klassen Gliederung
Einem echten regex könnte
\bLoad\s+frm
InformationsquelleAutor der Antwort sln
Verwenden Sie die
/c
option:Aus der Hilfe (
findstr /?
):InformationsquelleAutor der Antwort Joey
Word regex delimiter
Ich verwendet, die die Besondere
\<
"Wortanfang" regex-symbol.Habe ich versucht, diese auf die Win10-version von findstr. Aber laut Microsoft diese spezielle
\<
- Zeichen wurde infindstr.exe
seit WinXP.Voll (und schmerzhaft) Aufschlüsselung der vielen Optionen, die NICHT funktionieren unten.
Ganz unten: was hat tatsächlich funktioniert.
Die Beispiel-Datei selbst
Falsch. Mit regelmäßigen Ausführung Raum behandelt wird als Trennzeichen verwendet wird.
Falsch: Mit Regex-option-space ist immer NOCH so behandelt, als Trennzeichen.
Mehr richtig, aber trotzdem falsch. Mit der option /C bekommen wir jetzt die erhaltenen Räume, aber nicht finden, andere Zeichen zu Fällen.
Falsch. /I für "Ignore Case" nicht helfen. Wir bekommen Spiele von innerhalb der Worte, die wir nicht wollen.
Recht. Spezielle "Wortanfang" regex-symbol. Entspricht beginning-of-line oder space.
Entweder Kleinschreibung:
oder ignorieren Fall
InformationsquelleAutor der Antwort StackzOfZtuff
Dieses Stück code erlaubt nur Buchstaben, zahlen, Unterstrich und Leerzeichen im Schlüsselwort:
InformationsquelleAutor der Antwort Jan Valentin