[GO] [Ruby] Wie ersetze ich nur einen Teil der Zeichenkette, der mit dem regulären Ausdruck übereinstimmt?

Problem

Ist es möglich, nur das "http" der URL, die mit ".png " endet, in "https" zu ändern, wenn eine Zeichenfolge wie die folgende vorhanden ist?

str = 'kkk<a href="http://abcdege/hoge222/bar/t22est.md">aaab.png 
bbb<a href="http://abcdege/ho22aage/bddfear/ted2st.png ">aaak
ubotabbbccxcb <a href="http://abcdege/22hoge/b22ar/tfeest.md">aa23a
bbkubotasbbb <a href="http://abcdege/hoffee11ge/bar/test.html">appkub
otapoooabbb<a href="http://abcdege/ho22aage/bddfear/ted2swwt.png ">ab
ddbbb.png'

Erwägung

Ich war ziemlich besorgt. Ich habe versucht, es mit der gsub-Methode (regulärer Ausdruck, Zeichenfolge) von Ruby zu ersetzen.

Also fragte ich mich, ob es eine Möglichkeit gibt, nur einen Teil der Übereinstimmung (URL) zu ersetzen (diesmal http-Teil).

Das Ergebnis des Denkens

Ich konnte mit der obigen Idee nicht daran denken. Erstens war die Idee, nur die Methode der Methode gsub (regulärer Ausdruck, Zeichenfolge) zu verwenden, möglicherweise nicht gut. Es kann eine Möglichkeit geben, so etwas wie einen Block regulärer Ausdrücke zu verwenden. ** Am Ende konnte ich jedoch eine Prozedur erstellen, die zum gleichen Ergebnis führen würde. ** ** **

Durch 2-Stufen-Sub ersetzen.

Umriss des Gedankenalgorithmus

".URL beginnend mit png".gsub(http, "https")

Es ist ein Fluss, durch den ersetzt werden muss.

Details des betrachteten Algorithmus (fertiges Produkt)

Extrahieren Sie zunächst die URL aus der Zeichenfolge. Ich wollte hier "String # scan" verwenden, aber es scheint, dass es bereits eine Methode namens "URL aus String extrahieren" gibt. .. (zu erstaunlich) Referenz: URL aus String extrahieren - Ruby Tips!

URI.extract(str)
#=> ["http://abcdege/hoge222/bar/t22est.md", "http://abcdege/ho22aage/bddfear/ted2st.png ", "http://abcdege/22hoge/b22ar/tfeest.md", "http://abcdege/hoffee11ge/bar/test.html", "http://abcdege/ho22aage/bddfear/ted2swwt.png "]

Verwenden Sie diese als Nächstes, um sie zu bestimmen und zu ersetzen.

(Fertiges Produkt)
URI.extract(str).each do |uri|
  if /.*(\.png)$/.match(uri)
    new_uri = uri.sub("http","https")
    str = str.sub(uri, new_uri)
  end
end
str
#=> "kkk<a href=\"http://abcdege/hoge222/bar/t22est.md\">aaab.png \nbbb<a href=\"https://abcdege/ho22aage/bddfear/ted2st.png\">aaak\nubotabbbccxcb <a href=\"http://abcdege/22hoge/b22ar/tfeest.md\">aa23a\nbbkubotasbbb <a href=\"http://abcdege/hoffee11ge/bar/test.html\">appkub\notapoooabbb<a href=\"https://abcdege/ho22aage/bddfear/ted2swwt.png\">ab\nddbbb.png "

Ich denke, es geht darum, es durch ein zweistufiges Sub zu ersetzen.

Recommended Posts

[Ruby] Wie ersetze ich nur einen Teil der Zeichenkette, der mit dem regulären Ausdruck übereinstimmt?
Ändern Sie die zu ersetzende Zeichenfolge entsprechend der übereinstimmenden Zeichenfolge, indem Sie sie durch den regulären Python-Ausdruck ersetzen
So verbinden Sie den Inhalt der Liste mit einer Zeichenfolge
So speichern Sie einen Teil eines langen Videos mit OpenCV
So berechnen Sie die Volatilität einer Marke
Schneiden Sie einen Teil der Zeichenfolge mit einem Python-Slice aus
[Ubuntu] So löschen Sie den gesamten Inhalt des Verzeichnisses
So testen Sie die Attribute, die durch add_request_method of pyramid hinzugefügt wurden
So mischen Sie einen Teil der Python-Liste (at random.shuffle)
So ermitteln Sie den Skalierungskoeffizienten eines bipolaren Wavelets
Holen Sie sich die passende Zeichenfolge in den regulären Ausdruck und verwenden Sie sie beim Ersetzen unter Python3 erneut
Wie kann man schnell die Häufigkeit des Auftretens von Zeichen aus einer Zeichenfolge in Python zählen?
Wie man zeichnet, indem man die Farbe des Diagramms kontinuierlich mit matplotlib ändert und einfach viele Legenden anordnet
So schreiben Sie, wenn Sie eine Zahl nach der Gruppennummer setzen möchten, die durch einen regulären Ausdruck in Python ersetzt werden soll
So bestimmen Sie die Existenz eines Selenelements in Python
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
So überprüfen Sie die Speichergröße einer Variablen in Python
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
So geben Sie das Ausgabeergebnis des Linux-Befehls man in eine Datei aus
So ermitteln Sie die Scheitelpunktkoordinaten eines Features in ArcPy
So extrahieren Sie die gewünschte Zeichenfolge aus einem Befehl in Zeile 4
Abfangen oder Manipulieren der SSL-Kommunikation des tatsächlichen iOS-Geräts durch einen Proxy
[Python] Verwendung der for-Anweisung. Eine Methode zum Extrahieren durch Angabe eines Bereichs oder von Bedingungen.
[NNabla] So entfernen Sie die mittlere Ebene eines vorgefertigten Netzwerks
Django super Einführung von Python-Anfängern! Teil 2 Ich habe versucht, die praktischen Funktionen der Vorlage zu nutzen
So schneiden Sie den unteren rechten Teil des Bildes mit Python OpenCV
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
[NNabla] Hinzufügen einer Quantisierungsschicht zur mittleren Schicht eines trainierten Modells
So setzen Sie eine Zeilennummer am Anfang einer CSV-Datei
Ich möchte einen Teil der Excel-Zeichenfolge mit Python einfärben
So erstellen Sie einen Wrapper, der die Signatur der zu umschließenden Funktion beibehält
[Einführung in Python] So schreiben Sie eine Zeichenfolge mit der Formatierungsfunktion
So spielen Sie ein Video ab, während Sie die Anzahl der Bilder ansehen (Mac)
Ich habe versucht, das Ergebnis des A / B-Tests mit dem Chi-Quadrat-Test zu überprüfen
Sortieren durch Angabe einer Spalte im Python Numpy-Array.
So überprüfen Sie die Version von Django
[Python] So invertieren Sie eine Zeichenfolge
So erhalten Sie den "Namen" eines Feldes, dessen Wert durch das Auswahlattribut im Django-Modell begrenzt ist
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
Wie man eine Benutzergruppe mit Slack-Benachrichtigung erwähnt, wie man die ID einer Benutzergruppe überprüft
[Circuit x Python] So ermitteln Sie die Übertragungsfunktion eines Schaltkreises mit Lcapy
Teilt die Zeichenfolge durch die angegebene Anzahl von Zeichen. In Ruby und Python.
[NNabla] So erhalten Sie die Ausgabe (Variable) der mittleren Schicht des erstellten Netzwerks
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
Verwenden Sie Pillow, um das Bild transparent zu machen und nur einen Teil davon zu überlagern
Ein Memorandum zur Ausführung des Befehls! Sudo magic in Jupyter Notebook
[Numpy, scipy] Wie berechnet man die Quadratwurzel einer Elmeet-Matrix mit halbregelmäßigem Wert?
Link zu den Datenpunkten des von jupyterlab & matplotlib erstellten Diagramms
So erstellen Sie einen Raspberry Pi, der die Tweets eines bestimmten Benutzers spricht
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Versuchen Sie, nur den Kern von Ubuntu zu installieren
So finden Sie den Bereich des Boronoi-Diagramms
Einbetten von Variablen in Python-Strings
So löschen Sie die von Python ausgegebenen Zeichen
[Hinweis] So erstellen Sie eine Ruby-Entwicklungsumgebung