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?
Jim
sumber
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".

Tink
sumber
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

pengguna2351281
sumber