2012-03-30 2 views
1

ich mit einigen Tabulator getrennte Strings arbeite so:Wie mache ich meine Tabs Ausschluss Ausschluss Ausschluss Muster ts nicht ausschließen? Ich habe die folgende Übereinstimmungsmuster mit allem, aber die Tabs passen

[^\\t]+ 

Leider ist mein Muster ts im Text auszuschließen. Zum Beispiel:

"Jim\tand\tjane\twent\tto\twork." 

passt der folgende:

Jim and jane wen o work. 

Alle Ideen, wie die Registerkarten ausschließen, aber schließen die ts.

Update: Ich habe versucht mit [^ \ t] + auf Rubular und RegexPal. Keine Seite scheint das als Tab zu erkennen. Beide erkennen jedoch \ t als tab und t an.

Zweites Update: Ich sehe, es war ein Problem mit der Schnittstelle. Ich habe das Muster in die Schienenkonsole gelegt und [^ \ t] hat tatsächlich funktioniert. Danke an alle für Ihre tollen Kommentare und Anregungen.

+1

Ihre Regex passt alles außer Schrägstriche und 't's –

+0

Warum ts? Ich dachte, ich entkam einfach dem Tab. – Mutuelinvestor

+0

, weil Sie Backslash entfernt haben. Aber ich habe das Gefühl, dass Sie nichts außer einem * einzigen * Tab-Zeichen (ASCII 0x09) finden wollen, sondern nach einer Möglichkeit suchen, eine * Sequenz * loszuwerden. "Backslash gefolgt von Zeichen 't' ". Habe ich recht? –

Antwort

4

Es sieht so aus, als ob die Benutzerschnittstelle Sie ein wenig stören könnte. Eine Hälfte des Problems besteht darin, dass der Backslash nicht mit [^\t] maskiert werden muss.

Die andere Hälfte des Problems ist, dass die Web-Schnittstelle an der Tastatur akzeptiert keinen Tabs, so dass er denkt, dass Ihr Test-String wörtlich Backslash von t enthält, gefolgt wird.

Versuchen Sie, eine Registerkarte in einen externen Texteditor eingeben und dann kopieren und diese Registerkarte in Ihre Test-String in Rubular einfügen, so dass es wie Leerzeichen aussieht. Dann sollte die [^\t]+ mit den Nicht-Tabs übereinstimmen, ohne die 't'-Zeichen wegzulassen.

1

Igor hat Recht. Aktualisieren Sie Ihren regulären Ausdruck auf [^\t]+ sollte Ihr Problem beheben.

Ihre ursprüngliche regexp [^\\t]+ würde wie folgt interpretiert werden: Match 1 oder mehr, +, Zeichen außer, ^, Backslash, \ oder einem Kleinbuchstaben t, t.

Arbeitsbeispiel auf rubular.com mit [^\x09]+ und "Jim und Jane ging zur Arbeit."

Arbeitsbeispiel auf rubular.com mit [^\t]+ und "Jim und Jane ging zur Arbeit."

+0

Ich benutze Rubular, um mein Muster zu testen, und aus welchem ​​Grund auch immer \ t passt nicht zu einem Tab, aber \\ t tut es. Leider, wie Igor betonte, stimmt es auch mit ts überein. – Mutuelinvestor

+0

@Mutuelinvestor: Können Sie bitte erklären, was Sie mit einem Tab bedeuten? Ist es ein einzelnes Zeichen mit ASCII-Code 9 ** oder ** '\' + 't' wie in Ihrer Frage? Es macht einen Unterschied. –

+0

Probieren Sie stattdessen '[^ \ x09] +'. Funktioniert es? – Melioratus

Verwandte Themen