Câu trả lời:
Nếu bạn muốn chỉ khớp các dòng bắt đầu với ngừng sử dụng
^stop
Nếu bạn muốn nối các dòng bắt đầu bằng từ dừng, theo sau là dấu cách
^stop\s
Hoặc, nếu bạn muốn khớp các dòng bắt đầu bằng từ dừng nhưng theo sau là khoảng trắng hoặc bất kỳ ký tự không phải từ nào khác mà bạn có thể sử dụng (cho phép hương vị regex của bạn)
^stop\W
Mặt khác, những gì đứng sau khớp với một từ ở đầu chuỗi trên hầu hết các hương vị regex (trong các hương vị này \ w khớp với từ đối lập với \ W)
^\w
Nếu hương vị của bạn không có phím tắt \ w, bạn có thể sử dụng
^[a-zA-Z0-9]+
Hãy cảnh giác rằng thành ngữ thứ hai này sẽ chỉ khớp với chữ cái và số, không có bất kỳ ký hiệu nào.
Kiểm tra sổ tay hướng dẫn sử dụng regex của bạn để biết những phím tắt nào được phép và chúng khớp chính xác với những gì (và cách chúng xử lý với Unicode.)
^stop\b
, điều này sẽ cho phép bất kỳ ranh giới nào, bao gồm cả cuối dòng
Thử cái này:
/^stop.*$/
Giải trình:
Nếu bạn muốn thực thi lệnh dừng được theo sau bởi một khoảng trắng, bạn có thể sửa đổi RegEx như vậy:
/^stop\s+.*$/
Lưu ý: Cũng nên nhớ rằng RegEx ở trên yêu cầu từ dừng phải được theo sau bởi một khoảng trắng! Vì vậy, nó sẽ không khớp với một dòng chỉ chứa: dừng lại
Nếu bạn muốn so khớp bất cứ điều gì sau một từ dừng lại, không chỉ ở đầu dòng, bạn có thể sử dụng: \bstop.*\b
- từ theo sau bởi dòng
Hoặc nếu bạn muốn đối sánh từ trong chuỗi sử dụng \bstop[a-zA-Z]*
- chỉ những từ bắt đầu bằng dấu dừng
Hoặc đầu dòng có dấu dừng ^stop[a-zA-Z]*
cho từ chỉ - chỉ từ đầu tiên
Toàn bộ dòng ^stop.*
- chỉ dòng đầu tiên của chuỗi
Và nếu bạn muốn so khớp mọi chuỗi bắt đầu với dừng bao gồm cả dòng mới, hãy sử dụng: /^stop.*/s
- chuỗi nhiều dòng bắt đầu bằng dừng
Giống như @SharadHolani đã nói. Điều này sẽ không khớp với mọi từ bắt đầu bằng " dừng lại "
. Chỉ khi nó ở đầu dòng như " stop going ". @Waxo đã đưa ra câu trả lời đúng:
Cái này là hơi tốt hơn, nếu bạn muốn để phù hợp với bất kỳ từ nào bắt đầu với " stop " và chứa gì, nhưng chữ từ A đến Z .
\bstop[a-zA-Z]*\b
Điều này sẽ phù hợp với tất cả
dừng lại (1)
dừng ngẫu nhiên (2)
dừng lại (3)
muốn dừng lại (4)
làm ơn dừng lại (5)
Nhưng
/^stop[a-zA-Z]*/
sẽ chỉ khớp (1) cho đến (3), nhưng không khớp (4) & (5)
/stop([a-zA-Z])+/
Sẽ khớp với bất kỳ từ dừng nào (dừng, dừng, dừng, v.v.)
Tuy nhiên, nếu bạn chỉ muốn so khớp "dừng" ở đầu chuỗi
/^stop/
sẽ làm: D
Tôi khuyên bạn không nên sử dụng phương pháp biểu thức chính quy đơn giản cho vấn đề này. Có quá nhiều từ là chuỗi con của các từ không liên quan khác, và bạn có thể sẽ khiến mình phát điên khi cố gắng khai thác các giải pháp đơn giản hơn đã được cung cấp.
Bạn sẽ muốn ít nhất một thuật toán tạo gốc ngây thơ (hãy thử trình tạo gốc Porter; có sẵn, mã miễn phí ở hầu hết các ngôn ngữ) để xử lý văn bản trước. Giữ văn bản đã xử lý này và văn bản được xử lý trước trong hai mảng phân chia không gian riêng biệt. Đảm bảo rằng mỗi ký tự không phải là bảng chữ cái cũng nhận được chỉ mục riêng của nó trong mảng này. Bất kể danh sách từ nào bạn đang lọc, hãy cắt chúng.
Bước tiếp theo sẽ là tìm các chỉ số mảng phù hợp với danh sách các từ 'dừng' gốc của bạn. Xóa chúng khỏi mảng chưa được xử lý, sau đó tham gia lại vào khoảng trắng.
Điều này chỉ phức tạp hơn một chút, nhưng sẽ là một cách tiếp cận đáng tin cậy hơn nhiều. Nếu bạn có bất kỳ nghi ngờ nào về giá trị của một cách tiếp cận theo định hướng NLP, bạn có thể muốn thực hiện một số nghiên cứu về những sai lầm nhỏ .
Nếu bạn muốn từ bắt đầu bằng "dừng", bạn có thể sử dụng mẫu sau. "^ dừng lại. *"
Điều này sẽ khớp các từ bắt đầu bằng dấu dừng, theo sau là bất kỳ thứ gì.
"^stop"
?
code
String line = "stopped";
String pattern = "^stop";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
System.out.println(m.find( )); //prints true
System.out.println(line.matches(pattern)); //prints false