Frage

Ich habe gearbeitet für 5 Jahre hauptsächlich in der java-desktop-Anwendungen den Zugriff auf Oracle-Datenbanken und ich haben nie verwendet reguläre Ausdrücke.Jetzt geben Sie mir Stapel Überlauf, und ich sehe eine Menge Fragen über Sie;Ich fühle mich wie ich etwas verpasst.

Was tun Sie reguläre Ausdrücke verwenden?

P. S.sorry für mein schlechtes Englisch

War es hilfreich?

Lösung

Betrachten Sie ein Beispiel in Ruby:

puts "Matched!" unless /\d{3}-\d{4}/.match("555-1234").nil?
puts "Didn't match!" if /\d{3}-\d{4}/.match("Not phone number").nil?

Die "/\d{3}-\d{4}/" ist der reguläre Ausdruck, und wie Sie sehen können, es ist eine SEHR präzise Art und Weise von der Suche nach einer übereinstimmung in einer Zeichenfolge.

Darüber hinaus, die Verwendung von Gruppen können Sie Informationen extrahieren, die als solche:

match = /([^@]*)@(.*)/.match("myaddress@domain.com")
name = match[1]
domain = match[2]

Hier, die Klammer im regulären Ausdruck markieren Sie eine erfassungsgruppe, sodass Sie genau sehen können, WAS die Daten ist, dass Sie aufeinander abgestimmt, so können Sie der weiteren Verarbeitung.

Dies ist nur die Spitze des Eisbergs...es gibt viele verschiedene Dinge, die Sie tun können, in einem regulären Ausdruck, der die Verarbeitung von text ganz einfach.

Andere Tipps

Reguläre Ausdrücke (oder Regex) werden verwendet, um Muster Spiel der Streicher.Sie können somit ziehen alle E-Mail-Adressen aus einem Stück text, weil Sie es folgt ein bestimmtes Muster.

In einigen Fällen reguläre Ausdrücke sind eingeschlossen in vorwärts-Schrägstriche und nach dem zweiten Schrägstrich platziert werden Optionen wie groß-Unempfindlichkeit.Hier ist ein guter :)

/(bb|[^b]{2})/i

Gesprochen wird es Lesen kann "2 be or not 2 be".

Der erste Teil sind die (Klammern), Sie sind aufgeteilt durch das pipe-Zeichen " | " das entspricht einer or-Anweisung, so dass (a|b) entspricht "a" oder "b".Die erste Hälfte des Pipe Fläche entspricht "bb".In der zweiten Hälfte den Namen weiß ich nicht, aber es ist die eckigen Klammern, Sie passen alles, was nicht "b", das ist, warum es ist ein Dach-symbol thingie (technischer Begriff) gibt.Die squiggly Klammern entsprechen der Zahl der Dinge, bevor Sie, in diesem Fall zwei Zeichen, die nicht "b".

Nach dem zweiten " / " ist ein "ich", das macht Sie groß-und Kleinschreibung.Verwenden Sie den Beginn und das Ende Schrägstriche ist der Umgebung, manchmal muss man tun, und manchmal tun Sie nicht.

Zwei links, die ich denke, Sie werden finden, die dazu nützlich sind

  1. regular-expressions.info
  2. Wikipedia Reguläre Ausdrücke

Coolsten regulären Ausdruck je:

/^1?$|^(11+?)\1+$/

Es testet, ob eine Zahl eine Primzahl ist.Und es funktioniert!!

N. B.:zu machen es Arbeit, ein bisschen set-up erforderlich;die Zahl, die wir testen wollen, werden in einen string umgewandelt, der “1"s erste, dann wir finden den Ausdruck zu testen, ob die Zeichenfolge nicht nicht enthalten eine Primzahl von “1"s:

def is_prime(n)
  str = "1" * n
  return str !~ /^1?$|^(11+?)\1+$/ 
end

Es gibt eine detaillierte und sehr zugängliche Erklärung über an Avinash Meetoo s blog.

Wenn Sie wollen zu erfahren Sie mehr über reguläre Ausdrücke, die ich empfehlen Mastering Reguläre Ausdrücke.Es geht von der grundlegenden Konzepte, bis hin zu reden, wie die verschiedenen Motoren arbeiten unter.Die letzten 4 Kapiteln gibt auch ein Kapitel gewidmet, um jeden von PHP .Net, Perl und Java.Ich habe sehr viel dabei gelernt, und immer noch verwenden Sie es als Referenz.

Wenn Sie gerade erst anfangen, mit regulären Ausdrücken, ich herzlich empfehlen, ein tool wie Den Regex Coach:

http://www.weitz.de/regex-coach/

auch gehört gute Dinge über RegexBuddy:

http://www.regexbuddy.com/

Wie Sie vielleicht wissen, hat Oracle hat jetzt reguläre Ausdrücke: http://www.oracle.com/technology/oramag/webcolumns/2003/techarticles/rischert_regexp_pt1.html.Ich habe die neue Funktionalität in ein paar Anfragen, aber es ist noch nicht so nützlich wie in anderen Kontexten.Der Grund, glaube ich, ist, dass reguläre Ausdrücke eignen sich am besten für die Suche nach strukturierten Daten vergraben in unstrukturierten Daten.

Zum Beispiel könnte ich einen regex verwenden, um zu finden, Oracle-Nachrichten, die gestopft werden in die log-Datei.Es ist nicht möglich zu wissen, wo die Nachrichten sind--nur, wie Sie Aussehen.So ein regex ist die beste Lösung für das problem.Wenn Sie arbeiten mit einer relationalen Datenbank, die Daten in der Regel pre-strukturiert, sodass eine regex nicht glänzt in diesem Zusammenhang.

Regulärer Ausdruck (regex oder regexp for short) is a special text string for describing a search pattern.Sie können denken, reguläre Ausdrücke, wie wildcards on steroids.Sie sind wahrscheinlich vertraut mit wildcard-Schreibweise wie *.txt finden Sie alle text-Dateien in einem Datei-manager.Die regex-äquivalent ist .*\.txt$.

Eine großartige Ressource für reguläre Ausdrücke: http://www.regular-expressions.info

Diese RE sind spezifisch für Visual Studio und C++, aber ich habe Sie gefunden die hilfreich bei Zeiten:

Finden Sie alle vorkommen von "routineName" mit nicht-Standard-Parameter übergeben:

routineName\(a+\)

Umgekehrt finden Sie alle vorkommen von "routineName" mit nur Standardwerte: routineName\(\)

Finden Sie code aktiviert (oder deaktiviert) in einem debug-build:

\#, wenn._DEBUG*

Beachten Sie, dass diese fangen alle Varianten:ifdef, falls definiert, ifndef, wenn !definiert

Überprüfen Sie starke Passwörter:

Dieser wird validiert ein Passwort mit einer Länge von 5 bis 10 alphanumerische Zeichen und mindestens einen Großbuchstaben, einen Kleinbuchstaben und eine Ziffer:

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{5,10}$
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top