[RUBY] [Memorandum] Ich habe angefangen zu arbeiten, deshalb möchte ich reguläre Ausdrücke genau studieren. [Reguläre Ausdrücke]

Referenzartikel

https://qiita.com/jnchito/items/893c887fbf19e17d3ff9 https://qiita.com/jnchito/items/64c3fdc53766ac6f2008

Um ehrlich zu sein, bin ich dem Autor dieses Artikels zu Dank verpflichtet. Dieser Artikel ist ein Ausgabeartikel des obigen Artikels, daher ist er möglicherweise besser als das Lesen dieses Artikels.

Was ist ein regulärer Ausdruck?

"Mini-Sprache zum effizienten Suchen und Ersetzen von Zeichenketten durch Angabe eines Musters"

Wurde im obigen Artikel geschrieben. Hmmmm. Sicher vage, aber ich erinnere mich an "Muster", Suchen und Ersetzen.

Ich werde es vorerst versuchen. Mal sehen.

Spielen Sie mit der Website https://rubular.com/, um reguläre Ausdrücke zu lernen.

Der Teststring sieht so aus.

Name: Onikan
Telefon: 03-1234-5678
Adresse: 1 Chuo-ku, Tokio-2-3

Bei der Eingabe von "\ d" wurde nur der numerische Wert blau angezeigt. (Backslash kann übrigens mit Option + \ für Mac gemacht werden)

Mit anderen Worten, "\ d" steht für eine Zahl mit halber Breite (0123456789). \ d wird auch als ** Metasprache ** bezeichnet und bedeutet auch, dass es eine Reihe von Zeichen darstellt, sodass es als ** Zeichenklasse ** bezeichnet zu werden scheint. Hmmmm.

Dies ist die ** "Minisprache zum effizienten Suchen und Ersetzen von Zeichenketten" **, die früher herauskam, und ist sie eines der "Muster"?

Denken Sie jedoch daran, dass \ d eine Zahl mit halber Breite darstellt.

Versuchen Sie, Metazeichen zu verbinden.

Da \ d eine Zahl mit halber Breite darstellt, lernen wir den Fall der Darstellung von zwei oder drei.

Ich habe "\ d \ d- \ d \ d \ d \ d- \ d \ d \ d \ d" eingegeben. Dieses Mal wird das Ganze einschließlich Bindestrichen ausgewählt.

\ d \ d repräsentiert zwei verkettete Zahlen halber Breite. (Wie 12 oder 34.)

Versuchen Sie, auf Ruby zu laufen

text = <<-TEXT
Name: Onikan
Telefon: 03-1234-5678
Adresse: 1 Chuo-ku, Tokio-2-3
TEXT
text.scan /\d\d-\d\d\d\d-\d\d\d\d/
# => ["03-1234-5678"]

Übrigens, wenn Sie mit dem Teil von text = << - TEXT nicht vertraut sind, möchten Sie vielleicht nach" Ruby here document "suchen.

Versuchen Sie es mit JavaScript

const text = "Name: Onikan\n Telefon: 03-1234-5678\n Adresse: 1 Chuo-ku, Tokio-2-3";
text.match(/\d\d-\d\d\d\d-\d\d\d\d/g);
// => ["03-1234-5678"]

\ n ist der Zeilenvorschubcode. g wird als globale Option bezeichnet. Es gibt die folgenden Unterschiede zwischen mit und ohne.

--Ja: Wenn der erste gefunden wird, endet die Suche. --None: Extrahiert die übereinstimmende Zeichenfolge.

Entspricht der Vorwahl

/ \ d \ d- \ d \ d \ d \ d- \ d \ d \ d \ d / entspricht nicht allen Zahlen. Zum Beispiel

etc. Lernen Sie reguläre Ausdrücke, die damit umgehen können. Das Wichtigste hier ist, das ** Muster ** zu finden, nach dem gesucht werden soll. In diesem Fall ist es wie folgt.

Richten Sie sich in dieser Reihenfolge aus. Das neue Wissen, das hier herauskommt, verwendet die Metazeichen "{n, m} und {n}". Da es die Anzahl der Zeichen angibt, wird es als Mengenangabe bezeichnet.

{n, m} gibt an, dass "das letzte Zeichen n oder mehr und m oder weniger ist". Wenn es sich beispielsweise um "\ d {1,4}" handelt, steht die Zahl ** mit halber Breite ** für 1 bis 4 Zeichen.

Wenn Sie es also auf das vorherige Muster anwenden, sieht es so aus.

Es sollte "\ d {2,5} - \ d {1,4} - \ d {4}" sein.

Ich möchte auch Klammern unterstützen!

Im obigen Beispiel kann "03 (1234) 5678" usw. nicht unterstützt werden. Also, ** Ich möchte es so ändern, dass es mit Bindestrichen oder Klammern verwendet werden kann **

Die neuen Muster sind "Bindestrich oder (" und "Bindestrich oder)". Hier kommt neues Wissen heraus.

"Ein Zeichen von A oder B" → bedeutet "[AB]". (Da es sich um eine Reihe von Zeichen handelt, handelt es sich um eine Art Zeichenklasse.) Die Anzahl der Zeichen in [] ist übrigens unbegrenzt. [ABC] repräsentiert ein beliebiges Zeichen.

Daher wird "Bindestrich oder (" als "[- (]" ausgedrückt. "Bindestrich oder)" [-)] ". Lass uns das Ganze schreiben.

\d{2,5}[-(]\d{1,4}[-)]\d{4}

Bindestriche können eine besondere Bedeutung haben. Zum Beispiel steht "[A-Z]" für "A oder B oder C oder ... Z". Mit anderen Worten, es handelt sich um ein englisches Zeichen in voller Breite. Das heißt, es kann einen Bereich von ** Zeichen darstellen. ** ** **

Wenn ein Bindestrich am Anfang oder Ende von "[]" wie "[-AB]" oder "[AB-]" eingefügt wird, wird er als Bindestrich selbst betrachtet.

Zusammenfassung

-- \ d steht für eine Zahl mit halber Breite --{n, m}gibt an, dass das vorherige Zeichen n oder mehr und m oder weniger ist. --{n}repräsentiert genau n Zeichen. --[ab]Ein Buchstabe von a oder b --[a-z]ist ein Buchstabe von a oder b oder c oder ... z --[-az]repräsentiert-oder a oder z.

Schließlich

Wie ich am Anfang sagte, ist dieser Artikel ein Ausgabeartikel, daher denke ich, dass Sie darauf verweisen sollten.

https://qiita.com/jnchito/items/893c887fbf19e17d3ff9

Recommended Posts

[Memorandum] Ich habe angefangen zu arbeiten, deshalb möchte ich reguläre Ausdrücke genau studieren. [Reguläre Ausdrücke]
Ich möchte in der Lage sein, selbst reguläre Ausdrücke zu denken und zu schreiben. ..
Ich möchte Zeichen konvertieren ...
Ich möchte mit einem regulären Ausdruck zwischen Zeichenketten extrahieren