2011-03-16 41 views
19

Cụm từ thông dụng sẽ khớp với một chuỗi chỉ chứa các chữ số từ 0 đến 9, dấu phẩy và dấu chấm phẩy là gì? Tôi đang tìm cách sử dụng nó trong Java như vậy:Chữ số kết hợp Regex, dấu phẩy và dấu chấm phẩy?

word.matches("^[1-9,;]$") //Or something like that... 

Tôi mới đến cụm từ thông dụng.

+0

Vâng, bạn gần - bạn nghĩ gì '1-9' làm ? –

+0

'1-9' có thể sẽ không khớp từ 0 đến 9 cũng như' 0-9' sẽ, khác hơn ... –

+0

Woah, cảm ơn mọi người. Phải là quá dễ dàng. –

Trả lời

42

Bạn gần như có nó, bạn chỉ cần bỏ qua 0 và quên số lượng.

word.matches("^[0-9,;]+$") 
+10

Bah, 17 giây: D – Shaded

4

Hãy thử word.matches("^[0-9,;]+$");

0
boolean foundMatch = Pattern.matches("[0-9,;]+", "131;23,87"); 
+0

Chuỗi có kết quả phù hợp() quá ... "131; 23,87" .matches ("[0-9,;] +") hoạt động tốt ... – Jean

2

word.matches("^[0-9,;]+$"); bạn gần như có

20

Bạn đang 90% con đường đó.

^[0-9,;]+$

Bắt đầu với carat ^ chỉ ra một sự khởi đầu của dòng.

Các [ chỉ ra một bộ ký tự

Các 0-9 chỉ ra ký tự từ 0 đến 9, dấu phẩy , chỉ dấu phẩy, dấu chấm phẩy và chỉ ra một ;.

Việc đóng ] cho biết phần cuối của bộ ký tự.

Dấu cộng + cho biết rằng một hoặc nhiều "mục trước" phải có mặt. Trong trường hợp này, nó có nghĩa là bạn phải có một hoặc nhiều ký tự trong bộ ký tự được khai báo trước đó.

Đồng đô la $ cho biết kết thúc của dòng.

+0

Tôi nghĩ^$ có thể cũng có nghĩa là bắt đầu và kết thúc của bất kỳ đầu vào nào (có thể là toàn bộ tệp văn bản dưới dạng chuỗi dài), không nhất thiết phải là một dòng. Nhưng tính năng này phụ thuộc vào việc thực hiện Biểu thức chính quy. –

+0

Nếu ai đó quyết định tạo một ngôn ngữ biểu thức chính quy, trong đó '^ $' có nghĩa là bất kỳ đầu vào nào, thì tại sao lại bận tâm với dấu chấm '.' và các toán tử '*' sao? Tôi không nghi ngờ rằng ai đó có thể làm điều đó, nhưng về cơ bản nó có nghĩa là bạn không thể phù hợp với các dòng trống (mà là câm). –

+0

[xem trang này] (http://www.regular-expressions.info/anchors.html) "Vì vậy, tất cả các công cụ regex được thảo luận trong hướng dẫn này đều có tùy chọn mở rộng ý nghĩa của cả hai ký tự."^khớp với đầu chuỗi và $ khớp với phần cuối của chuỗi. Vì vậy, nó là một tùy chọn để làm cho chúng phù hợp với sự bắt đầu và kết thúc của một dòng, nhưng tùy chọn này không phải là một khuyến nghị. –

1

Regex hiện tại của bạn sẽ chỉ khớp với 1 ký tự. bạn cần hoặc là * (bao gồm chuỗi rỗng) hoặc + (ít nhất một) để khớp với nhiều ký tự và số có một phím tắt: \ d (cần \\ trong một chuỗi).

word.matches("^[\\d,;]+$") 

Các tài liệu mẫu là khá tốt: http://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html

Ngoài ra bạn có thể thử regexps của bạn trực tuyến tại địa chỉ: http://www.regexplanet.com/simple/index.html

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