2009-09-27 38 views
5

Tôi muốn có một RegEx để khớp các giá trị khoảng cách trong hệ mét. Regex này phải khớp với 12m, 100cm, 1km bỏ qua khoảng trắngRegEx cho khoảng cách trong hệ mét:

+11

StackOverflow - khỉ lập trình cá nhân của bạn. – LiraNuna

+0

@LiraNuna - chắc chắn, đó là một yêu cầu lazyweb, nhưng hãy cân nhắc rằng Google có thể xếp hạng trang này cao cho "khoảng cách số liệu regex" hoặc truy vấn tương tự và các câu trả lời khác nhau có thể hữu ích cho người khác. –

+0

@Paul Dixon: Nó sẽ là tốt đẹp, tuy nhiên, nếu poster ban đầu ít nhất sẽ sửa chữa những lỗi chính tả rõ ràng. Có một sự chênh lệch lớn giữa số lượng nỗ lực đưa ra bởi người hỏi, và số lượng nỗ lực đưa ra bởi những người trả lời ... – Fragsworth

Trả lời

7

Và để mở rộng câu trả lời của Paul để bao gồm các giá trị thập phân ...

(\d+).?(\d*)\s*(m|cm|km) 
+0

Điểm tốt, mặc dù tôi đã cố gắng để tạo ra các regex đơn giản phù hợp với mô hình chung của các ví dụ của mình - giá trị số nguyên của cm, mét và km. +1 - chào mừng bạn đến stackoverflow :) –

+1

Tôi đã làm như vậy ban đầu, nhưng khi bạn đánh bại tôi để đăng bài, tôi figured tôi sẽ mở rộng nó :), cảm ơn cho chào đón. –

4

Vì bạn đã không chỉ định chính xác những gì bạn muốn, tôi đã sử dụng các ví dụ của bạn để lấy được giá trị số nguyên, tiếp theo khoảng trắng tùy chọn, theo sau là một đơn vị specifier của cm, m hoặc km. Vì vậy - đây là ví dụ đơn giản nhất về điều đó.

/(\d+)\s*(m|cm|km)/ 

Dấu ngoặc đơn đầu tiên ghi số, sau đó bỏ qua 0 dấu cách khoảng trống trước khi ghi lại đơn vị bắt buộc trong bộ ngoặc đơn thứ hai.

Như bạn có thể thấy trong các câu trả lời khác, bạn có thể vượt qua điều này để nhận các giá trị thập phân và cũng có thể nắm bắt được nhiều tiền tố đơn vị SI nữa.

+0

nhưng điều này sẽ không hoạt động cho 12m 20cm –

+1

Freeman: Bạn có thường nhận ra khoảng cách như vậy không? '12,2 m' là một cách tự nhiên hơn nhiều để nói nó .. – u0b34a0f6ae

11

Hãy thử điều này:

(?:0|[1-9]\d*)\s*(?:da|[yzafpnμmcdhkMGTPEZY])?m 
+0

đầu tiên nghĩ rằng phần' yzafpnμmcdhkMGTPEZY' là một trò đùa, đó là những tiền tố SI! :-) – u0b34a0f6ae

+1

Và đừng quên bổ sung 'quantifiers' được đề xuất trong bản cập nhật năm 1993 vào tệp Jargon File (http://catb.org/~esr/jargon/html/Q/quantifiers.html), cụ thể là, groucho/grouchi và harpo/harpi. Nó đã không được đề nghị làm thế nào cuộc xung đột giữa G = Giga (1e9) và G = Grouchi (1e30) có thể được giải quyết. – pavium

+0

ah cái này tốt. +1 –

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