Regulären Ausdruck zu Entfernen Subdomain von der Root Domäne in der Liste - Notepad++ oder Gvim
Habe ich eine Liste von URLs gespeichert .txt-Datei (ich benutze Windows 7).
Das format der URLs ist dies:
somesite1.com
somesite2.com
somesite3.com
sub1.somesite3.com
sub2.somesite3.com
sub3.somesite3.com
sub1.somesite3.net
sub1.somesite1.org
In notepad++, es gibt eine option für "suchen-ersetzen mit regulären Ausdrücken", und ich bin ziemlich sicher, dass gvim ermöglicht dem Benutzer reguläre Ausdrücke (obwohl ich bin mir nicht ganz sicher, wie man Sie in Gvim).
Sowieso, ich weiß nicht, was in dem suchen & ersetzen-Boxen, so kann es einem gehen durch den Inhalt der Datei und lassen Sie mich mit nur der root-domains. Wenn richtig gemacht, es würde die obige Beispiel-Liste in das:
somesite1.com
somesite2.com
somesite3.com
somesite3.com
somesite3.com
somesite3.com
somesite3.net
somesite1.org
Kann jemand mir helfen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein paar Möglichkeiten, es zu tun für Vim (die Schrägstriche sind optional, auch):
Siehe auch
:help /\ze
etc.\ze
und\zs
sind Vim-spezifisch und sehr nützlich. Es gibt auch look-ahead und look-behind assertions, die nützlich sein können, in Vim und PCRE.Glaube ich Notepad++ verwendet PCRE; finden
^.+\.([^.]+\.[^.]+)$
und ersetzen Sie es mit\1
funktionieren sollte (ich aber nicht benutze Notepad++).Bewusst sein, das wird nicht funktionieren, auch country-code-top-level-domains, die Verwendung von third-level-Registrierung -
example.com.au
wäre, sich incom.au
. Und dann gibt es einige Staaten, die eine zweite- oder third-level-Registrierung unter bestimmten Regeln... wenn Sie kümmern sich um diejenigen Fälle, werden Sie brauchen mehr Regeln und einen vollständigen parser wäre sauberer als ein regulärer Ausdruck (aber wie immer würde es mit regulären Ausdrücken möglich).Ersetzen
^[^.]*\.(?=\w+\.\w+$)
mit<blank>
Entschlüsselt, dies bedeutet:
^
= start der Linie[^.]*
= beliebige Anzahl von Zeichen, die kein Punkt\.
= ein Punkt(?=[^.]+\.[^.]+$)
= es muß genau ein Wort, ein Punkt, dann ein Wort von hier bis zum EndeBEARBEITET - Added-look-ahead für ein weiterer Punkt
ERNEUT geändert - Geändert-look-ahead-für genau einen Punkt zwischen den Wörtern
somesite1.com
->com
? Zeit zu überdenken.\zs
/\ze
im Vim.sub.sub.example.com
insub.example.com
eher alsexample.com
das ist, was gewünscht ist (obwohl Robert gab keine Anzeichen, dass er läuft über fourth-level-domains, es ist eine Möglichkeit und ganz gültig).\w+\.\w+.\w+
. Wenn es etwas anderes, lassen Sie mich wissen, was.Ersetzen ganzer Linie zum Letzten Wort und dem vorhergehenden Wort.
Beachten Sie, dass vim erfordern
\
,(
,)
für + wie\+
UPDATE:
ist vielleicht besser.
\w
nicht schneiden es:-
gilt im domain-Namen.