วิธีลบตัวเลขทั้งหมดในสตริง ยกเว้น 1 และ 2:
- Regex
(?<!\\d)1(?!\\d)จับคู่เลข 1 ที่ไม่ติดตัวเลขอื่น (standalone) - Regex
(?<!\\d)2(?!\\d)จับคู่เลข 2 standalone - แทนที่ 1 → "one", 2 → "two" แล้วลบตัวเลขอื่นๆ ด้วย
\\s*\\d+
ตัวอย่าง
import java.util.Scanner;
public class RegexExample {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a String");
String input = sc.nextLine();
// จับคู่ 1 และ 2 ที่เป็นตัวเดียว (ไม่ติดตัวเลขอื่น)
String regex1 = "(?
ผลลัพธ์
Enter a String: sample 1 2 3 4 5 6
Result: sample one two
อธิบาย Regex
(?<!\\d)- Negative lookbehind: ไม่มีตัวเลขก่อนหน้า(?!\\d)- Negative lookahead: ไม่มีตัวเลขถัดไป(?<!\\d)1(?!\\d)→ จับคู่ "1" ที่แยกจากตัวเลขอื่น (ไม่ใช่ส่วนหนึ่งของ 12, 21, 123)\\s*\\d+- whitespace ตามด้วยตัวเลข 1+ หลัก (ลบตัวเลขที่เหลือ)
กรณีทดสอบเพิ่มเติม
| Input | Output | อธิบาย |
|---|---|---|
| sample 1 2 3 4 5 6 | sample one two | 1,2 คงไว้ เปลี่ยนคำ 3-6 หาย |
| abc123def | abcdef | 123 เป็นกลุ่ม ตัดทิ้ง |
| version 1.2.3 | version one.two.3 | 1,2 standalone → one,two; 3 ตัดทิ้ง |
| year 2024 | year | 2024 ตัดทิ้งหมด |
หมายเหตุ
Lookbehind (?<!\\d) ต้องการ Java 8+ สำหรับ variable-length lookbehind (Java 8 รองรับ finite length)