Diberikan tiga string teks berikut:

export DB_USER='aodhfoi2'
export DB_USER = aodhfoi2
export DB_USER="aodhfoi2"

Tanpa tanda kutip tunggal atau ganda, regex akan menjadi:

^export (?<key>[^= ]+)\s*=\s*(?<value>.+)$

Apa regex yang benar dengan tanda kutip terlampir? Saya berasumsi bahwa saya memerlukan kondisi untuk memastikan bahwa jika dimulai dengan ' diakhiri dengan ' dan bukan ".

Regex saat ini di sini: https://regex101.com/r/yqvUIX/3

0
David542 12 Desember 2019, 01:12

1 menjawab

Jawaban Terbaik

Jika Anda ingin nilai di antara tanda kutip sebagai nilai terpisah, Anda dapat menggunakan grup penangkap lain untuk menangkap " atau ' opsional dengan referensi balik ke apa yang ditangkap dalam grup agar sesuai dengan kutipan.

^export (?<key>[^= ]+)\s*=\s*(['"]?)(?<value>\S+)\2

Penjelasan bagian terakhir

  • (['"]?) Tangkap grup 2, cocokkan opsional ' atau "
  • (?<value>\S+) Grup bernama value, cocokkan 1+ kali karakter non spasi
  • \2 Referensi balik ke apa yang ditangkap di grup 2

Demo ekspresi reguler

3
The fourth bird 11 Desember 2019, 22:23