2010-11-04 29 views
18

Tôi vừa hỏi câu hỏi này question về cách sử dụng cụm từ thông dụng để cho phép số từ -90.0 đến +90.0. Tôi có một số câu trả lời về cách thực hiện cụm từ thông dụng, nhưng hầu hết các câu trả lời cũng đề cập rằng điều đó sẽ được xử lý tốt hơn mà không sử dụng cụm từ thông dụng hoặc sử dụng cụm từ thông dụng sẽ quá mức cần thiết. Vì vậy, làm thế nào để bạn quyết định khi nào sử dụng một biểu thức chính quy và khi không sử dụng một biểu thức chính quy. Có danh sách kiểm tra bạn có thể theo dõi không?Để sử dụng hay không sử dụng cụm từ thông dụng?

+0

Đã thêm thẻ C# vì câu hỏi trước của bạn là dành cho C#. Hy vọng nó ổn. – Shoban

+4

Tôi không nghĩ rằng câu hỏi này là C# cụ thể. –

+0

câu hỏi ban đầu là C# -Thực hiện cụ thể; câu hỏi này không được thực hiện cụ thể. –

Trả lời

42

Cụm từ thông dụng là một công cụ xử lý văn bản công cụ cho dựa trên ký tự kiểm tra. Chính thức hơn, biểu thức thông thường là tốt trong việc xử lý ngôn ngữ thông thường và xấu ở hầu hết mọi thứ khác.

Trong thực tế, điều này có nghĩa là biểu thức thông thường không phải là rất thích hợp cho các công việc đòi hỏi phải khám phá ra ý nghĩa (ngữ nghĩa) trong văn bản mà đi xa hơn mức độ nhân vật. Điều này đòi hỏi một trình phân tích cú pháp toàn diện.

Trong trường hợp cụ thể của bạn: nhận dạng số trong văn bản là tập thể dục mà biểu thức chính quy là tốt tại (số thập phân có thể được mô tả bằng một ngôn ngữ thông thường). Điều này hoạt động trên cấp độ nhân vật.

Nhưng thực hiện các công cụ nâng cao hơn với số yêu cầu phải biết số giá trị số (nghĩa là ngữ nghĩa của nó) yêu cầu diễn giải. Cụm từ thông dụng là xấu ở đây. Vì vậy, việc tìm kiếm một số trong văn bản rất dễ dàng. Tìm số trong văn bản lớn hơn 11 nhưng nhỏ hơn 1004 (hoặc chia hết cho 3) là khó: nó yêu cầu nhận diện nghĩa là của số.

+3

Ah, cảm ơn vì điều này, vì vậy việc nhận ra -90 và +90 rất dễ dàng, nhưng xác định xem con số có nằm trong khoảng -90.0 đến +90.0 hay không là một thách thức. Nếu tôi chỉ tìm kiếm -90 hoặc 90, thì đó chỉ là văn bản đơn giản '-90' hoặc '90' mà tôi có thể dễ dàng phân tích cú pháp, nhưng nếu tôi tìm số ở giữa, thì nó sẽ trở thành nhiều hơn là xử lý văn bản . Tôi có hiểu rằng tất cả đều đúng không? Đó là cách tôi giải thích những gì bạn nói. – Xaisoft

+1

@Xaisoft: vâng, bạn giải thích điều đó một cách chính xác. –

0

Câu trả lời là thẳng về phía trước:

Nếu bạn có thể giải quyết vấn đề mà không có biểu thức chính quy (chỉ bằng chức năng chuỗi), bạn không sử dụng cụm từ thông dụng. Như đã nói trong một cuốn sách tôi đã đọc: biểu thức chính quy là bạo lực trên máy tính.

Nếu việc sử dụng các hàm chuỗi ngôn ngữ phức tạp, hãy sử dụng cụm từ thông dụng.

+0

Mặc dù lời khuyên thiết thực, tôi không nghĩ câu trả lời này nhất thiết là * hoàn thành * lời khuyên. Câu hỏi cụ thể này không có gì thực sự liên quan đến việc xử lý chuỗi ngoài thực tế là người dùng đang xem biểu diễn chuỗi dữ liệu thập phân. – GrayWizardx

2

Không có ý nghĩa hay không, bạn nên sử dụng cụm từ thông dụng khi bạn có chuỗi chứa thông tin được cấu trúc trong regular language và bạn muốn biến chuỗi này thành mô hình đối tượng.

+0

Cảm ơn bạn đã liên kết. – Xaisoft

3

Tôi có thể nói rằng biểu thức regex hiệu quả nhất trên Chuỗi. Đối với các kiểu dữ liệu khác, thao tác của kiểu dữ liệu đó thường sẽ trực quan hơn và cung cấp kết quả tốt hơn. Ví dụ, nếu bạn biết rằng bạn đang xử lý DateTime, thì bạn có thể sử dụng các phương thức Parse và TryParse sẽ là các định dạng khác nhau và nó thường sẽ đáng tin cậy hơn các biểu thức chính quy của riêng bạn.

Trong ví dụ của bạn, bạn đang xử lý các con số để xử lý chúng tương ứng.

Regex rất mạnh mẽ, nhưng nó không phải là mã dễ đọc nhất và để gỡ lỗi. Khi một giải pháp đáng tin cậy khác ở trong tầm tay, bạn có lẽ nên đi cho điều đó.

+0

Đây là kỹ thuật chính xác nhưng không đầy đủ - regex hiệu quả nhất trên các chuỗi * chứa dữ liệu thường xuyên *. –

0

Basic use-case cho RegEx: -

  1. Bạn cần "Value Pairs Key" - Cả Key và giá trị được nhúng trong văn bản ồn ào khác - không thể được truy cập hoặc bị cô lập khác.

  2. Bạn cần tự động hóa việc trích xuất các giá trị này bằng cách lặp qua nhiều tài liệu.

  3. Số và kết hợp các cặp Khóa giá trị có thể được phát hiện khi bạn tiến hành phân tích cú pháp thông qua văn bản.

Các vấn đề liên quan