Bash sử dụng loại công cụ biểu thức chính quy nào?


12

Tôi sử dụng RegEx Buddy để tạo nguyên mẫu và gỡ lỗi các biểu thức chính quy của mình. RegEx Buddy cho phép tôi chọn giữa một số loại công cụ biểu thức chính quy khác nhau (.NET, Java, Perl, GNU BRE, GNU ERE, POSIX, BRE, POSIX ERE, v.v.).

Công cụ biểu thức chính quy nào bash sử dụng (ví dụ trong ifcasecâu lệnh)? Tôi đang chạy Centos 5.5 32 bit và bash 3.2.25 (1):

[kevin@mon01 scratch]$ bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

Tôi đoán nó sẽ là GNU BRE hoặc GNU ERE?

Câu trả lời:


11

bash (và shell POSIX nói chung) không sử dụng các biểu thức chính quy trong casecâu lệnh, thay vào đó là các mẫu hình cầu .

Có hỗ trợ hạn chế cho các biểu thức thông thường sử dụng =~toán tử; xem chi tiết tại: http://mywiki.wooledge.org/BashGuide/Potypes ,
trong đó nói rằng bashsử dụng Biểu thức chính quy mở rộng (ERE).


Cảm ơn. Liên kết thứ hai đề cập đến ERE mà tôi đoán là GNU ERE.
Kev

2

Bash không sử dụng bất kỳ loại biểu thức chính quy nào ở trên ifvà các casecâu lệnh.

Thay vào đó, nó sử dụng các mẫu toàn cầu vỏ, ít mạnh hơn bất kỳ loại biểu hiện thông thường nào. Các phiên bản tương đối mới của bash cũng cho phép sử dụng các mẫu hình cầu mở rộng tương đương với biểu thức chính quy không có neo (dòng) nhưng bao gồm các thuật ngữ phủ định, nhưng với một cú pháp khác với bất kỳ loại biểu thức chính quy nào được đề cập ở trên.

Tuy nhiên, xin lưu ý rằng các khối vỏ mở rộng phải được kích hoạt sử dụng trước với shopt -s extglob cả hai trong tập lệnh shell hoặc tương tác.

Ở một vị trí đặc biệt duy nhất, cụ thể là trong [[ ]]lệnh có điều kiện, =~quan hệ nhị phân cho phép kiểm tra một chuỗi ở phía bên trái so với biểu thức ERE thông thường mở rộng ở phía bên phải.


0

Theo hướng dẫn Bash được liên kết, Bash (kể từ phiên bản 3.0+) sử dụng: " phương ngữ biểu thức chính quy mở rộng (ERE) ".

Thông tin thêm về phương ngữ đó có thể được tìm thấy ở đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.