Saya memiliki string dalam satu sel lembar Google tempat saya ingin mengekstrak nama file gambar ke dalam sel terpisah di lembar untuk mengisolasi nama file dari string. Contohnya ...

enter image description here

Jadi, jika string aslinya adalah ...

{[file_name_1.png][yes]}{[file_name_2.jpg][no]}{[file_name_3.png][no]}

... maka saya ingin tiga sel berikut memiliki file_name_1.png, file_name_2.jpg, file_name_3.png di dalamnya.

Saya sudah mencoba yang berikut ini ...

(.*?[A-Za-z0-9_]+\.(?:(?:png)|(?:jpg))){1} yang memberikan {[file_name_1.png

(.*?[A-Za-z0-9_]+\.(?:(?:png)|(?:jpg))){2} yang memberikan ][yes]}{[file_name_2.jpg

(.*?[A-Za-z0-9_]+\.(?:(?:png)|(?:jpg))){3} yang memberikan ][no]}{[file_name_3.png

... jadi saya merasa hampir sampai. Bisakah seseorang tolong bantu saya memahami di mana saya salah? Terima kasih

1
MrMills 2 Juli 2020, 23:24

1 menjawab

Jawaban Terbaik

Anda dapat menggunakan tiga grup penangkap yang dipisahkan dengan pola .*? yang cocok dengan 0 atau lebih karakter apa pun selain karakter pemisah baris, sesedikit mungkin:

=REGEXEXTRACT(A1, "([A-Za-z0-9_]+\.(?:png|jpg)).*?([A-Za-z0-9_]+\.(?:png|jpg)).*?([A-Za-z0-9_]+\.(?:png|jpg))")

enter image description here

Lihat demo regex.

Detail

  • ([A-Za-z0-9_]+\.(?:png|jpg)) - grup penangkap yang cocok dengan 1 atau lebih huruf, angka, atau garis bawah, ., lalu png atau jpg
  • .*? - cocok dengan 0 atau lebih karakter selain karakter jeda baris, sesedikit mungkin.

Jika nama file kedua dan ketiga adalah opsional, bungkus .*? dan pola file dengan grup non-capturing opsional:

"([A-Za-z0-9_]+\.(?:png|jpg))(?:.*?([A-Za-z0-9_]+\.(?:png|jpg)))?(?:.*?([A-Za-z0-9_]+\.(?:png|jpg)))?"

Ringkasan

Untuk mendapatkan kecocokan pertama, cukup gunakan

=REGEXEXTRACT(A1, "[A-Za-z0-9_]+\.(?:png|jpg)")

Untuk mendapatkan yang kedua, gunakan

=REGEXEXTRACT(A1, "(?:.*?([A-Za-z0-9_]+\.(?:png|jpg))){2}")

Untuk mendapatkan yang ketiga, gunakan

=REGEXEXTRACT(A1, "(?:.*?([A-Za-z0-9_]+\.(?:png|jpg))){3}")
1
Wiktor Stribiżew 2 Juli 2020, 20:42