ต่อไปนี้คือตัวอย่างที่แสดงวิธีการดึงตัวเลขออกจากสตริงโดยใช้นิพจน์ทั่วไปใน Java
ความสามารถในการแยกวิเคราะห์สตริงและดึงข้อมูลออกมาเป็นทักษะสำคัญที่ผู้ทดสอบทุกคนควรมี สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อทำการทดสอบ API และคุณจำเป็นต้องแยกวิเคราะห์การตอบสนอง JSON หรือ XML
ตัวอย่าง Java Regular Expression ต่อไปนี้เน้นที่การแยกตัวเลขหรือตัวเลขออกจากสตริง
แยกตัวเลขทั้งหมดออกจากสตริง
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExamples {
public static void main(String[]args) {
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher("string1234more567string890");
while(m.find()) {
System.out.println(m.group());
}
}
}
เอาท์พุต:
1234
567
890
ที่เกี่ยวข้อง:
- วิธีการแปลงสตริงเป็น Int ใน Java
- วิธีย้อนกลับสตริงใน Java
- วิธีเปรียบเทียบสตริงใน Java
แยกตัวเลข nth จากสตริง
หากคุณต้องการแยกเฉพาะตัวเลขบางตัวจากสตริง คุณสามารถระบุดัชนีให้กับ group()
ฟังก์ชัน
ตัวอย่างเช่น หากเราต้องการแยกเฉพาะตัวเลขชุดที่สองจากสตริง string1234more567string890
เช่น 567
เราก็สามารถใช้:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExamples {
private static final Pattern p = Pattern.compile("[^\\d]*[\\d]+[^\\d]+([\\d]+)");
public static void main(String[] args) {
// create matcher for pattern p and given string
Matcher m = p.matcher("string1234more567string890");
// if an occurrence if a pattern was found in a given string...
if (m.find()) {
System.out.println(m.group(1)); // second matched digits
}
}
}
เอาท์พุต:
567
คำอธิบายของรูปแบบ [^\d]*[\d]+[^\d]+([\d]+)
- ไม่ต้องสนใจตัวเลขใดๆ
- ไม่ต้องสนใจหลักใดๆ (ตัวเลขแรก)
- ละเว้นที่ไม่ใช่ตัวเลขอีกครั้ง
- จับหมายเลขที่สอง
แยกหมายเลขจากแอตทริบิวต์แท็ก
เมื่อจัดการกับแท็ก XML หรือ HTML บางครั้งก็จำเป็นต้องดึงค่าจากแอตทริบิวต์ ตัวอย่างเช่น พิจารณาแท็กต่อไปนี้
<result name="response" numFound="9999" start="0">
ดึงเลข 9999
เราสามารถใช้รหัสต่อไปนี้:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExamples {
public static void main(String[]args) {
Pattern pattern = Pattern.compile("numFound=\"([0-9]+)\"");
Matcher matcher = pattern.matcher("");
if (matcher.find()) {
System.out.println(matcher.group(1));
}
}
}
เอาท์พุต:
9999
แยกสตริงที่มีตัวเลขและอักขระ
คุณสามารถใช้นิพจน์ทั่วไปของ Java เพื่อแยกส่วนของสตริงที่มีตัวเลขและอักขระ สมมติว่าเรามีสตริงนี้ Sample_data = YOUR SET ADDRESS IS 6B1BC0 TEXT
และเราต้องการแยก 6B1BC0
ซึ่งมีความยาว 6 ตัวอักษร , เราสามารถใช้:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExamples {
public static void main (String[] args) {
Pattern p = Pattern.compile("YOUR SET ADDRESS IS\\s+([A-Z0-9]{6})");
Matcher n = p.matcher("YOUR SET ADDRESS IS 6B1BC0 TEXT");
if (n.find()) {
System.out.println(n.group(1)); // Prints 123456
}
}
}
เอาท์พุต:
6B1BC0
แยกคู่คีย์-ค่าด้วยนิพจน์ทั่วไป
สมมติว่าเรามีสตริงรูปแบบ bookname=testing&bookid=123456&bookprice=123.45
และเราต้องการแยกคู่คีย์-ค่า bookid=123456
เราจะใช้:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExamples {
public static void main(String[] args) {
String s = "bookname=cooking&bookid=123456&bookprice=123.45";
Pattern p = Pattern.compile("(?<=bookid=)\\d+");
Matcher m = p.matcher(s);
if (m.find()) {
System.out.println(m.group());
}
}
}
เอาท์พุต:
123456