Bagaimana Memadankan Kejadian Regex Di Luar Petikan, Walaupun dengan Petikan Terlepas?

Linda Hamilton
Lepaskan: 2024-10-25 04:56:29
asal
430 orang telah melayarinya

How to Match Regex Instances Outside of Quotes, Even with Escaped Quotes?

Memadankan Kejadian Regex Di Luar Petikan: Satu Pendekatan Alternatif

Dalam soalan sebelumnya, adalah dicadangkan bahawa memadankan semua kejadian regex di luar petikan adalah mustahil. Walau bagaimanapun, ini tidak sepenuhnya tepat.

Penyelesaian kepada masalah ini terletak pada pengiktirafan bahawa sesuatu perkataan berada di luar petikan jika terdapat bilangan petikan genap mengikutinya. Ini boleh dimodelkan sebagai pernyataan pandangan ke hadapan:

\+(?=([^"]*"[^"]*")*[^"]*$)
Salin selepas log masuk

Walau bagaimanapun, ini tidak mengambil kira petikan yang dilepaskan. Untuk mengendalikan perkara ini, ungkapan diubah suai untuk mengabaikan aksara seterusnya jika garis miring ke belakang ditemui sebelum petikan:

\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)
Salin selepas log masuk

Ungkapan kompleks ini memastikan bahawa semua kejadian regex bukan dalam petikan dipadankan, walaupun dalam kehadiran petikan yang dilepaskan.

Alternatif Umum untuk Kaedah .split() dan .replace()

Walaupun penyelesaian regex ini berfungsi dengan baik, ia mungkin tidak sesuai untuk semua kes, terutamanya apabila menggunakan kaedah .split() dan .replace(). Pendekatan alternatif ialah menggunakan langkah berikut:

  1. Pisah rentetan kepada segmen berdasarkan petikan.
  2. Gunakan regex pada segmen yang bukan dalam petikan.
  3. Sambungkan kembali segmen, memastikan petikan diletakkan dengan betul.

Pendekatan ini lebih fleksibel dan boleh digunakan dalam julat senario yang lebih luas.

Atas ialah kandungan terperinci Bagaimana Memadankan Kejadian Regex Di Luar Petikan, Walaupun dengan Petikan Terlepas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!