Tôi đã đọc các câu hỏi về regex trên trang này nhưng vấn đề của tôi có vẻ hơi khác một chút. Tôi cần phải phù hợp với một số có 2 chữ số, chẳng hạn như 23 đến 75. Tôi đang làm điều này trên một hệ thống Unix của HP-UX. Tôi tìm thấy các ví dụ về 3 - 44 nhưng hoặc bất kỳ số chữ số nào, không có gì được cố định chiều dài, điều này hơi đáng ngạc nhiên, nhưng có lẽ tôi không hiểu câu trả lời ví dụ về độ dài biến.Cụm từ thông dụng - Phạm vi hai chữ số (23-79)?
Trả lời
Vì bạn không cho biết liệu điều này có bổ sung cho bất kỳ ký tự nào khác không (hoặc ở giữa một chuỗi lớn hơn), tôi đã bao gồm logic ở đây để chỉ ra những gì bạn cần để khớp với phần số của chuỗi. Điều này sẽ giúp bạn có được ở đó. Chúng tôi đang tạo một phạm vi cho các số thứ hai mà chúng tôi đang tìm kiếm chỉ cho phép các ký tự đó. Sau đó, chúng tôi đang so sánh nó với các phạm vi khác như một or
:
(2[3456789]|[3456][0-9]|7[])
Như Oded lưu ý bạn có thể làm điều này cũng kể từ dãy phụ cũng được chấp nhận (phụ thuộc vào việc thực hiện các regex trong ứng dụng mà bạn đang sử dụng):
(2[3-9]|[3-6][0-9]|7[0-5])
Dựa vào tiêu đề bạn sẽ thay đổi người cuối cùng từ 5 đến 9 để đi 75-79:
(2[3-9]|[3-6][0-9]|7[0-9])
Nếu bạn đang cố gắng để phù hợp với những con số cụ thể như một st vòng (từ đầu đến cuối) thì bạn sẽ sử dụng các công cụ sửa đổi ^
và $
để chỉ ra phần đầu và cuối của chuỗi.
Có một tài liệu tham khảo kỹ thuật tuyệt vời của Regex dao động ở đây:
http://www.regular-expressions.info/numericranges.html
Nếu bạn đang sử dụng một cái gì đó giống như grep và cố gắng để phù hợp với dòng có chứa số lượng với những nội dung khác thì bạn có thể làm điều gì đó như này cho các phạm vi thru 79:
grep "[^0-9]?(2[3-9]|[3-6][0-9]|7[0-9])[^0-9]?" folder
Có thể được rút ngắn thành '(2 [3-9] | [3-6] [0-9] | 7 [0-5])' – Oded
Phải. Tôi đã chạy vào trường hợp mà điều này không làm việc trong mọi thực hiện nhưng theo tiêu chuẩn nó nên. –
điều này sẽ trả về true nếu bạn vượt qua 2345 – SolidSnake
bạn có hai loại số bạn muốn kết hợp:
- các chữ số 2, tiếp theo là một trong các chữ số từ 3 đến 9
- một trong các chữ số từ 3 đến 7, tiếp theo là bất kỳ chữ số
Edit: Vâng, đó là phạm vi của tiêu đề (23-79).Trong câu hỏi của bạn (23-75), bạn có ba:
- các chữ số 2, tiếp theo là một trong các chữ số từ 3 đến 9
- một trong các chữ số từ 3 đến 6, tiếp theo là bất kỳ chữ số
- các chữ số 7, tiếp theo là một trong các chữ số từ 0 đến 5
Hầu như - tối đa '75', không phải là '79'. – Oded
@Oded Các op đã viết 79 trong chủ đề và sau đó 75 trong cơ thể của bài viết. Không rõ anh ta thực sự muốn gì. – Paulpro
Xin lỗi cho lỗi đánh máy trong ví dụ tiêu đề, hai số là ví dụ, điểm chính chỉ là 2 chữ số. Nhưng tôi hiểu ý anh là gì, 79 không phù hợp với toàn bộ phạm vi [3-7] [0-9], 75 thì chính xác hơn ở chỗ tôi không thể luôn lấp đầy toàn bộ phạm vi. Vì vậy, câu trả lời 3 phần là những gì tôi đang tìm kiếm. – user2414817
Công cụ này là chính xác những gì bạn cần: Regex_For_Range
Từ 29-79: \b(2[3-9]|[3-7][0-9])\b
Từ 29-75: \b(29|[3-6][0-9]|7[0-5])\b
Và chỉ để cho vui, 192-1742: \b(19[2-9]|[2-9][0-9]{2}|1[0-6][0-9]{2}|17[0-3][0-9]|174[0-2])\b
:)
này nên làm điều đó:
/^([2][3-9]|[3-6][0-9]|[7][0-5])$/
^
và $
sẽ làm cho nó nghiêm ngặt rằng nó sẽ chỉ khớp với 2 số, vì vậy trong trường hợp bạn có i.e 234
nó sẽ không hoạt động.
Vì vậy, bạn downvoted và sao chép câu trả lời của tôi? Không mát mẻ. –
Ngoài ra, thao tác này sẽ không hoạt động nếu chúng đang sử dụng thứ gì đó như 'grep' để khớp với một dòng có chứa các số mà chúng đang tìm kiếm. –
@ AbsoluteƵERØ - không bạn của tôi, tôi đã không bỏ phiếu cho câu trả lời của bạn. Tôi mất hơn 5 phút để kiểm tra các yêu cầu sau đó đăng nó sau đó tôi JUST đã kiểm tra câu trả lời của bạn. – SolidSnake
Nếu tôi muốn 2 chữ số phạm vi 0-63
/^[0-9]|[0-5][0-9]|6[0-3]$/
- [0-9] sẽ cho phép chữ số duy nhất 0-9
- [0-5] [0-9] sẽ cho phép 00-59
- 6 [0-3] sẽ cho phép từ 60 đến 63
Bằng cách này bạn có thể mất Regular Expression cho bất kỳ hai chữ số Phạm vi
- 1. Kiểm tra phạm vi số với cụm từ thông dụng
- 2. Cụm từ thông dụng để cho phép các giá trị số từ 1-3 chữ số?
- 3. Cụm từ thông dụng với bảng chữ cái cyrillic
- 4. Số ngẫu nhiên giữa hai phạm vi
- 5. Cụm từ thông dụng chỉ khớp với các chữ cái
- 6. Mã Python để sử dụng cụm từ thông dụng để đảm bảo chuỗi là chữ số và chữ số. - _
- 7. Các chữ cái trong Cụm từ thông dụng
- 8. Cụm từ thông dụng cho ít nhất một số
- 9. Cụm từ thông dụng cho số tài khoản ngân hàng?
- 10. Cụm từ thông dụng để khớp với hai cụm từ riêng biệt
- 11. VI Cụm từ thông dụng - Thay thế bằng số dòng hiện tại
- 12. cụm từ thông dụng thiếu một số chữ cái nhất định
- 13. Cụm từ thông dụng: Bất kỳ ký tự nào KHÔNG phải là chữ cái hoặc số
- 14. Cụm từ thông dụng - 2 chữ cái và 2 số trong C#
- 15. Sử dụng cụm từ thông dụng để so sánh số
- 16. Thoát biến trong Cụm từ thông dụng
- 17. Cụm từ thông dụng để định dạng số trong JavaScript
- 18. Cụm từ thông dụng cho một số thập lục phân?
- 19. Làm cách nào để tạo cụm từ thông dụng khớp với chữ hoa và chữ thường?
- 20. Cụm từ thông dụng trong OCaml
- 21. Cụm từ thông dụng trong findstr
- 22. Chia tỷ lệ giữa hai phạm vi số
- 23. cụm từ thông dụng "chứa" một cụm từ thông dụng khác
- 24. Cụm từ thông dụng trong MS Access VBA?
- 25. Unicode, cụm từ thông dụng và PyPy
- 26. Cụm từ thông dụng để cho phép chữ và số, chỉ một khoảng trắng và sau đó là số
- 27. Tham gia các cụm từ thông dụng
- 28. Kiểm tra dấu phụ với cụm từ thông dụng
- 29. tạo cụm từ thông dụng từ một chuỗi
- 30. Cụm từ thông dụng chỉ khớp với số lẻ hoặc số chẵn
Bạn có chắc chắn muốn có một regex ở đây không? Nó có vẻ như chuyển đổi sang một loại tích phân theo sau là so sánh số nguyên có thể thích hợp hơn. Đặc biệt là nếu phạm vi có thể thay đổi trong tương lai. – Paulpro
Hãy để tôi thứ hai @ đề xuất của Paulpro - trong khi một regex * có thể * làm điều này, đó là một người nghèo (tôi bị cám dỗ để nói "khủng khiếp") công cụ cho công việc. –
Có gì sai với '23 <= the_number <= 75'? –