Saya sedang mengerjakan file yang berisi baris dengan kata kunci dan beberapa baris berisi kata kunci yang digandakan.
Sebagai contoh:
dangerous,dangerous,hazardous,perilous
Saya ingin memberi tahu Notepad ++ bahwa saya ingin menghapus setiap kata yang digandakan per baris. Untuk contoh ini dangerous,
akan dihapus:
dangerous,hazardous,perilous
Saya memiliki banyak baris seperti itu dan itulah sebabnya saya mencari cara otomatis untuk melakukan ini.
notepad++
text-editors
duplicate
Gabriel
sumber
sumber
dangerous,hazardous,dangerous,perilous
? Dengan kata lain, apakah kata yang digandakan selalu bersebelahan?Jawaban:
Anda dapat menggunakan ekspresi reguler untuk menghapus kata yang digandakan berturut-turut dalam satu baris, namun saya rasa tidak mungkin untuk menghapus kata yang digandakan yang tidak berurutan (mis
dangerous, hazardous, dangerous
.).Gunakan regex ini di jendela ganti di Notepad ++, dan jangan lupa untuk memilih "Ekspresi reguler" sebagai opsi Mode Pencarian di bawah:
Regex ini akan menghapus semua kata digandakan berturut-turut - apakah itu 2 kata digandakan atau 10 kata digandakan berturut-turut:
\b(\w+)(?:,\s+\1\b)+
.Regex no-koma yang sama persis adalah:
\b(\w+)(?:\s+\1\b)+
(mungkin berguna untuk pengguna lain).Jika Anda ingin regex khusus untuk hanya dua kata digandakan (ganda), menggunakan regex ini:
(\b\w+\b)\W+\1
.Tempatkan regex ini di Ganti dengan kotak untuk menjaga satu kejadian dari kata (kata kalau tidak semua diulang akan dihapus):
${1}
.Ekspresi reguler ini akan memperbaiki situasi seperti yang Anda gambarkan dalam pertanyaan Anda sebagai contoh. Regex pertama akan bekerja untuk setiap jumlah kata yang digandakan (misalnya
dangerous, dangerous, dangerous, dangerous, hazardous
), sedangkan versi kedua hanya akan berfungsi untuk dua kata yang digandakan (misalnyadangerous, dangerous, hazardous
).Catatan: Ekspresi reguler hanya akan berlaku untuk format yang dijelaskan dalam pertanyaan, yang berarti bahwa format suka
two words, two words, anotherword
,two-words, two-words, anotherword
,three words expression, three words expression, anotherword
tidak akan berubah karena regex tidak akan berlaku untuk mereka.sumber
(\b\w+\b)\W+\1
untuk dua kata yang digandakan. Saya akan mengedit jawaban saya. Koma adalah alasan mengapa regex lainnya tidak berfungsi.word, word, anotherword
. Namun, Anda memiliki banyak contoh yang sedikit berbeda, seperticame across, came across
dan beberapa dengan 3 atau 4 kata. Juga ada kata-kata dengan'
sukadon't
dan itu membuat hal-hal lebih rumit dalam sistem regex Notepad ++ . Sistem regex Notepad ++ cukup mengganggu dan terbatas juga, jadi solusinya adalah menggunakan regex dengan python (atau bahasa lain), atau membuat ekspresi reguler khusus format untuk Notepad ++.Ini adalah cara untuk melakukan pekerjaan itu, ini akan menggantikan semua kata duplikat bahkan jika mereka tidak bersebelahan:
(?:^|\G)(\b\w+\b),?(?=.*\1)
LEAVE EMPTY
. matches newline
Penjelasan:
Diberikan input seperti:
dangerous,dangerous,hazardous,perilous,dangerous,dangerous,hazardous,perilous
Kita punya:
sumber