Regex zum Ersetzen von _ durch - in allen URLs

Regex zum Ersetzen von _ durch - in allen URLs

Ich habe viele URLs in WordPress-Seiten, die_(Unterstriche) wie folgt: https://wpg.meditationyoga.in/Peace_research_studies/ und müssen ersetzen_mit-(Strich), um Folgendes zu erhalten: https://wpg.meditationyoga.in/Peace-research-studies/

aber man muss Regex verwenden, der diese Ersetzung nur in URLs vornimmt und nicht beispielsweise in anderen Elementen wie id=”attachment_1076″ oder id=”grad_table”

Ich verwende das Plugin „Search Regex“. Was ist der reguläre Ausdruck für die obigen Ersetzungen?

Antwort1

Ich bin mir nicht 100% sicher, aber ich denke, wenn man sich diePlugines unterstützt „PHP“, d. h. Sie könnten es mit einem Muster wie diesem versuchen:

(?:https?\S+?(?=_)|\G(?!^))(?:[^ _]*)\K_
  • (?:- Öffnen Sie die 1. Nicht-Erfassungsgruppe.
    • https?- Ordnen Sie „http“ wörtlich mit einem optionalen „s“ zu.
    • \S+?– Jedes Zeichen, das kein Leerzeichen ist, in einem Lazy Match.
    • (?=_)- Positiver Lookahead für einen Unterstrich.
    • |- Abwechselnd/ODER.
    • \G(?!^)- Behaupten Sie die Position am Ende des vorherigen Spiels, nicht am Anfang.
    • )- Schließen Sie die 1. Nichterfassungsgruppe.
  • (?:- Öffnen Sie die 2. Nichterfassungsgruppe.
    • [^ _]*- Übereinstimmung mit null oder mehr Zeichen außer Leerzeichen oder Unterstrich.
    • )- 2. Nichterfassungsgruppe schließen.
  • \K_- Setzt den Übereinstimmungspuffer zurück und sucht nach einem Unterstrich.

Sehen Sie sich die Online-Demo

verwandte Informationen