2010-08-20 69 views

Trả lời

9

Để có tài nguyên tốt, hãy thử website và chương trình RegexBuddy này. Bạn thậm chí có thể tự mình tìm ra câu trả lời cho câu hỏi của mình bằng cách sử dụng các trang web này.

Để bắt đầu bạn tắt bạn muốn một cái gì đó như thế này:

/^[a-zA-Z]{3}\s+[0-9]{2}$/ 

Nhưng các chi tiết chính xác phụ thuộc vào yêu cầu của bạn. Có thể bạn nên học cách sử dụng cụm từ thông dụng và sau đó viết cụm từ thông dụng thay vì chỉ sao chép câu trả lời ở đây. Các chi tiết nhỏ tạo nên sự khác biệt lớn. Ví dụ:

  • "Thư" là gì? Chỉ cần A-Z hoặc cũng có chữ nước ngoài? Điều gì về trường hợp thấp hơn?
  • "Số" là gì? Chỉ 0-9 hoặc cả chữ số nước ngoài? Chỉ số nguyên? Chỉ số nguyên dương? Có thể có số 0 đứng đầu không?
  • Nếu có một dấu cách giữa các chữ cái và số không? Hoặc bất kỳ số lượng bất kỳ khoảng trắng nào? Ngay cả không?
  • Bạn có muốn tìm kiếm chuỗi này trong văn bản lớn hơn không? Hoặc phù hợp với một dòng chính xác?
  • vv ..

Câu trả lời cho những câu hỏi này sẽ thay đổi cụm từ thông dụng. Nó sẽ nhanh hơn nhiều cho bạn trong thời gian dài để tìm hiểu cách tạo biểu thức chính quy hơn là hoàn toàn xác định các yêu cầu của bạn và chờ người khác trả lời.

Tôi quên đề cập rằng sẽ có một khoảng trống trước và sau.Làm thế nào để tôi đưa nó vào?

Một lần nữa bạn cần phải xem xét các câu hỏi:

  • Bạn có nghĩa là chỉ cần một không gian hoặc bất kỳ số lượng không gian? Có thể không phải lúc nào cũng là một không gian mà chỉ thỉnh thoảng?
  • Bạn có nghĩa là một ký tự khoảng trắng hoặc bất kỳ ký tự khoảng trống nào không?

tôi đoán là:

/^\s+[a-zA-Z]{3}\s+[0-9]{2}\s+$/ 
+0

Tôi xin lỗi, hoàn toàn mới đối với RegEx! Có sẽ có một không gian trước và sau.Tôi xin lỗi tôi đã không chỉ định –

+0

Trước và sau không có ý nghĩa! Chuỗi ví dụ của bạn là 'LET 12'. Điều đó có một không gian, ngay ở giữa! Bạn có muốn kết hợp 'LET 12' không? Có ba khoảng trống (trái, giữa, phải). Ngoài ra, bạn cần phải xác định những thứ như nhạy cảm với trường hợp, như Mark đã nói. – Stephen

+0

+1 Bạn viết và giải thích rõ ràng. Bạn là một nguồn tài nguyên tuyệt vời cho trang web này. – dawg

2

/[a-z]{3} [0-9]{2}/i sẽ khớp với 3 chữ cái theo sau là ký tự khoảng trắng và sau đó là 2 số. [a-z]character class chứa các chữ cái từ a đến z và {3} có nghĩa là bạn muốn chính xác 3 thành viên của lớp đó. Ký tự khoảng trắng phù hợp với một không gian chữ (luân phiên, bạn có thể sử dụng \s, là một lớp ký tự "viết tắt" khớp với bất kỳ ký tự trắng nào). Các i ở cuối là một pattern modifier xác định rằng mô hình của bạn là trường hợp-insenstive.

Nếu bạn muốn toàn bộ chuỗi chỉ được điều đó, bạn cần phải anchor nó với ^$:

/^[a-z]{3} [0-9]{2}$/i 

nguồn lực biểu hiện thường xuyên:

+0

Tại sao không '/ \ w {3} \ d {2}/'không quan tâm? –

+1

Tôi đã tiết lộ rõ ​​ràng hơn, nhưng '\ d' có thể được sử dụng thay cho' [0-9] '. Lưu ý rằng '\ w' không tương đương với' [a-z] ', mặc dù! Nó thường là '[A-Za-z0-9_]'. –

+0

Tại sao điều này lại được bình chọn? –

0

\w{3}\s{1}\d{2} Và tôi thích this site.

EDIT: [a-zA-Z]{3}\s{1}\d{2} - Các \w hỗ trợ ký tự số quá.

+0

-1 cho {1}, không có ý nghĩa gì, +1 cho việc sử dụng các lớp ký tự -> 0 trong tổng số – unbeli

+3

'\ w' không tương đương với' [a-zA-Z] ', nhưng nói chung' [a-zA-Z0-9_] ' –

+0

@unbeli, Không có gì sai với {1} ... nó không cần thiết cho công cụ regexp, nhưng nó là cú pháp và ngữ nghĩa hợp lệ. Nó làm cho regexp dễ dàng hơn cho người mới bắt đầu hiểu bởi vì cả ba thuật ngữ đều song song. @ DanielV, điểm tốt. – LarsH

1

^([A-Za-z]{3}) ([0-9]{2})$ giả sử một dấu cách giữa các chữ cái/số, như trong ví dụ của bạn. Điều này sẽ nắm bắt các chữ cái và số riêng biệt.

Tôi sử dụng http://gskinner.com/RegExr/ - nó cho phép bạn tạo regex và thử nghiệm bằng văn bản của riêng bạn.

+0

Tuyệt vời, nhưng tôi quên đề cập rằng sẽ có một không gian trước và sau. Làm thế nào để tôi đưa nó vào? –

0

Như bạn có thể biết từ nhiều câu trả lời khác nhau, RegEx là một chủ đề phức tạp với nhiều ý kiến ​​và sở thích khác nhau, và thường có nhiều cách để làm việc. Đây là giải pháp ưa thích của tôi.

^[a-zA-Z]{3}\s*\d{2}$ 

tôi đã sử dụng [a-zA-Z] thay vì \w\w đôi khi bao gồm dấu gạch dưới.

\s* là cho phép không hoặc nhiều khoảng trống.

Tôi cố gắng sử dụng các lớp nhân vật bất cứ khi nào có thể, đó là lý do tại sao tôi đi với \d.

0

thử biểu thức chính quy này

[^"\r\n]{3,} 
Các vấn đề liên quan