Ý tưởng
- Dùng lookbehind/lookahead khớp số đơn lẻ:
(? khớp "1" không liền số khác.
- Thay "1" → "one", "2" → "two".
- Xóa các số còn lại:
\\s*\\d+ thay bằng rỗng.
Ví dụ
import java.util.Scanner;
public class RegexExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Nhập chuỗi: ");
String input = sc.nextLine();
String regex1 = "(?
Kết quả
Nhập chuỗi: sample 1 2 3 4 5 6
Kết quả: sample one two
Giải thích regex
(? - negative lookbehind: trước đó không phải chữ số
(?!\\d) - negative lookahead: sau đó không phải chữ số
\\s*\\d+ - khoảng trắng tùy chọn + một hoặc nhiều chữ số
Lưu ý
- Thứ tự replace quan trọng: bảo toàn 1,2 trước, xóa số khác sau.
- Lookbehind Java yêu cầu fixed-length (Java 8+ hỗ trợ bounded).
- Để giữ số 12, 21... cần điều chỉnh regex.