OS, lingkungan, atau bahasa pemrograman apa yang Anda gunakan?
Steven
jendela, lingkungan tidak yakin apa yang Anda maksud tetapi pada saat ini dalam integrasi dan bahasa regEX java akan baik ... jenis seperti ini saya punya "^. +? \ SPM _. + $" tapi jelas melayani yang berbeda tujuan
user3738022
1
Apa inputnya? Apa hasilnya? Apakah ini file? Apakah ini digunakan dalam konteks pemrograman dengan Java? Script batch?
Samir
input adalah permintaan xpath yang memberikan output ini, digunakan dalam konteks pemrograman dengan java yes. Jadi cetak, tulis ke file tidak akan sesuai. Satu-satunya hal yang dapat diterima adalah ekspresi reguler. Saya mendapatkan ini "^. + \ - old. + $" Tetapi melakukan sebaliknya bukannya menghapus semuanya dengan
user3738022
Jawaban:
3
Saya pikir Anda memiliki kesalahpahaman tentang ekspresi reguler. Pada dasarnya mereka menjawab pertanyaan "apakah teks ini terlihat seperti pola khusus ini?" Ada banyak alat yang menggunakan ekspresi reguler untuk memanipulasi teks sed atau grep, dan saya pikir Anda membingungkan keduanya.
Yang perlu Anda lakukan adalah membentuk ekspresi reguler yang cocok dengan teks yang ingin Anda filter. Misalnya, ekspresi yang Anda cari adalah ^.*-old\|$, dan filter garis menggunakan sesuatu seperti ini.
foreach line in input_file
if regex.matches(line, "^.*-old\|$") then
continue
else
print line
Oke saya baru semua ini jadi saya mendapatkan istilah saya campur aduk, saya mencoba ekspresi sendiri dan tidak melakukan apa-apa yang tidak menghapus garis dengan -old. saya
user3738022
Saya telah mencoba regex ini "^. + \ - old. + $" Tetapi alih-alih menghapus baris-baris itu, mempertahankannya
user3738022
Yang kedua, ekspresi regex digunakan untuk "menjawab pertanyaan", atau lebih tepatnya menggambarkan polanya. Jelas mereka bukan yang mengajukan pertanyaan! ;-) Jika ada, penerjemahlah yang mengajukan pertanyaan "apa yang Anda ingin saya cari?".
Samir
Oke jadi apa yang bisa saya gunakan untuk memfilter ini dan mendapatkan hasil yang diinginkan karena semua baris yang mengandung -old dihapus
user3738022
@ user3738022 Kode pseudo yang diberikan Nat akan mencetak semua baris itu jangan cocok dengan regex. Jika Anda ingin dapat mengembalikannya ke fungsi lain di Jawa, Anda dapat membuat StringBuilder dan tambahkan line untuk itu di else klausa alih-alih mencetak.
Terima kasih tetapi seperti yang Anda katakan bagian yang sulit menemukan versi windows untuk grrp atau egrep Saya tidak ingin menggunakan cmd dan PowerShell. Tidak bisakah saya hanya mengubah ronde perintah ini sehingga menghapus baris dengan yang lama alih-alih hanya memilih yang: ^. +? \ - old. + $
Jawaban:
Saya pikir Anda memiliki kesalahpahaman tentang ekspresi reguler. Pada dasarnya mereka menjawab pertanyaan "apakah teks ini terlihat seperti pola khusus ini?" Ada banyak alat yang menggunakan ekspresi reguler untuk memanipulasi teks
sed
ataugrep
, dan saya pikir Anda membingungkan keduanya.Yang perlu Anda lakukan adalah membentuk ekspresi reguler yang cocok dengan teks yang ingin Anda filter. Misalnya, ekspresi yang Anda cari adalah
^.*-old\|$
, dan filter garis menggunakan sesuatu seperti ini.sumber
line
untuk itu dielse
klausa alih-alih mencetak.Yang Anda butuhkan adalah
atau apa yang harus bekerja sama:
Sekarang, bagian yang sulit adalah menemukan versi windows
grep
atauegrep
yang berjalan dari cmd.exe atau Powershell.sumber
negative lokahead
mungkin bekerja, tergantung pada mesin regex Anda.