Mengapa tidak menggunakan mode regex yang diperluas secara default?


10

Saya menggunakan sed. Saya menggunakan regex yang benar sejauh yang saya bisa lihat, tetapi sed tidak melakukan apa-apa. Ternyata saya menggunakan \s+yang tidak bisa mengerti, dan ketika saya beralih ke [ ]+itu berhasil.

Jadi singkatnya, saya membuat regex yang berfungsi agar saya harus melarikan diri dari hampir semua dan menghapus \sspasi putih. Tampaknya ada mode untuk menghindari semua ini yang -rJadi saya ingin bertanya:

  1. Mengapa bukan -rmode default untuk sed? Kenapa aku harus bersusah payah untuk melarikan diri semuanya?
  2. manmengatakan bahwa ada opsi --posixdan "POSIX.2 BREs harus didukung" Apa artinya ini? Mode NFA / DFA?

Sebagai tambahan, untuk mencocokkan spasi putih seperti perl \s+digunakan [[:space:]][:space:]]*di BRE dan yang sama atau [[:space:]]+di ERE.
jrm

Jawaban:


10

Re 1) Jawabannya sama dengan alat lain yang diperbaiki selama beberapa dekade. :)

Anda tidak ingin memecah skrip yang ada dengan mengubah perilaku default.

Re 2) Itu tidak ada hubungannya dengan mesin yang cocok; itu hanya pertanyaan yang set ekspresi reguler yang didukung. POSIX BRE berarti "ekspresi reguler dasar".


Bagaimana dengan poin (2)?
Jim

Apakah hasil edit membantu?
tink

1

Mengenai poin 2: gnu sedmenggunakan GNU BREsecara default. Untuk menggunakan POSIX BREAnda harus menentukan--posix

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.