2009-10-21 74 views
20

Dấu gạch dưới có ý nghĩa gì trong regex sau?_ Trong [a-zA-Z0-9_] có nghĩa là gì?

[a-zA-Z0-9_]

Các _ dường như làm cho không có sự khác biệt vì vậy tôi không hiểu mục đích của nó.

+10

BTW, '[a-zA-Z0-9_]' == '\ w' – Tordek

+7

Vui lòng xem [perlre] (http://perldoc.perl.org/perlre.html) và [perlref] (http: //perldoc.perl.org/perlreref.html). Có, tôi chỉ nói với "RTFM". –

+4

Tordek: không có [a-zA-Z0-9_]! = \ W, không phải trong Perl. –

Trả lời

44

Điều này có nghĩa là khớp với ký tự gạch dưới ngoài chữ thường, chữ in hoa và số.

15

Điều đó có nghĩa là dấu gạch dưới cũng được đối sánh.

65

Dấu gạch dưới có nghĩa là dấu gạch dưới.

+3

Hãy thử như một khả năng, tôi không thể tìm thấy một vấn đề duy nhất với tuyên bố của bạn; nó đơn giản hoàn toàn và logic vượt quá sự sỉ nhục :-) +1 – paxdiablo

+12

Và không bao giờ trước đây là nắp đại diện dễ dàng ... – Ether

9

Với ngoại lệ của chuỗi ký tự ([., [:[=), biểu hiện phạm vi (ví dụ: [a-z]), và circumflex vào đầu ([^), mỗi nhân vật bên trong một biểu hiện khung có nghĩa là nhân vật chính nó, giống như dấu gạch dưới đó.

Như một lưu ý phụ, biểu thức đó thường được đại diện bởi \w (ký tự từ, bỏ qua unicode và locale), và thường được sử dụng để xác định tập ký tự được phép sử dụng trong tên biến.

+3

\ w phụ thuộc vào ngôn ngữ và cũng sẽ khớp với các ký tự Unicode –

+0

Đối với hầu hết các ngôn ngữ, '[a-zA- Z _] [a-zA-Z0-9 _] * 'có lẽ chính xác hơn cho các tên biến vì chúng cấm bắt đầu bằng các chữ số. –

+0

Và nhiều ngôn ngữ hiện nay cho phép các tập lệnh khác cũng có tên biến. Vì vậy, vui chơi với các lớp Unicode cũng :-) – Joey

11

Cụm từ thông dụng được ghi lại trong perlre. Đó là nơi để kiểm tra bất cứ khi nào bạn có câu hỏi về cụm từ thông dụng. Trang web Regular-Expressions.info cũng rất hữu ích.

Để giúp bạn bắt đầu, thứ bạn đang xem được gọi là "lớp nhân vật".

+1

+1 để trả lời * nhiều hơn * so với câu hỏi ngay lập tức. – paxdiablo

+0

Cảm ơn bạn. Chỉ khi tất cả chúng ta đều chấp nhận những người mới. – unj2

+0

Đối với một người mới với các biểu thức chính quy trong Perl, tôi luôn đề nghị «perldoc perlrequick' trước tiên. Nó thân thiện hơn nhiều so với «perldoc perlre' - chủ yếu là vì nó không quá chi tiết. – Telemachus