Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะตรวจสอบรูปแบบ regex หลายรายการกับอินพุตได้อย่างไร การใช้จาวา


"|" อักขระเมตา: อักขระเมตา "|" ในนิพจน์ทั่วไปของ Java ช่วยให้คุณสามารถจับคู่นิพจน์ทั่วไปได้มากกว่าหนึ่งนิพจน์ ตัวอย่างเช่น หากคุณต้องการจับคู่ข้อความอินพุตเฉพาะกับนิพจน์มากกว่าหนึ่งนิพจน์ คุณต้องแยกนิพจน์ออกเป็น:

exp1|exp2|exp3

ตัวอย่าง

นำเข้า java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern; SampleExample คลาสสาธารณะ { public static void main (String [] args) { Scanner sc =สแกนเนอร์ใหม่ (ระบบ .ใน); System.out.println("ป้อนข้อมูลของคุณ:"); อินพุตสตริง =sc.nextLine(); //นิพจน์ปกติ String regex ="\\d{10}|^[aeiou]"; //การสร้างวัตถุรูปแบบ Pattern pattern =Pattern.compile(regex); //การสร้าง Matcher วัตถุ Matcher matcher =pattern.matcher (อินพุต); if(matcher.find()) { System.out.println(input+" is valid"); } อื่น { System.out.println (อินพุต +" ไม่ถูกต้อง"); } }}

ผลลัพธ์ 1

ป้อนข้อมูลของคุณ:98480332289848033228 ถูกต้อง

ผลลัพธ์ 2

ป้อนข้อมูลของคุณ:แอปเปิ้ลต่อวันช่วยให้แพทย์ไม่อยู่ แอปเปิ้ลต่อวันช่วยให้ห่างไกลแพทย์ถูกต้อง

การใช้รายการวัตถุ

อีกวิธีหนึ่งคือ คุณรวบรวมนิพจน์ทั่วไปทั้งหมดโดยใช้ออบเจกต์ Pattern แต่ละออบเจกต์ และเพิ่มลงในออบเจกต์รายการ และค้นหารายการที่ตรงกันในข้อความที่ป้อนเป็น -

List list =new ArrayList<>();list.add(Pattern.compile(regex1));list.add(Pattern.compile(regex2));for (รูปแบบรูปแบบ:รายการ) { Matcher matcher =รูปแบบ ตัวจับคู่ (อินพุต); if(matcher.find()) { . . . . . . . . . . . . . . . }อื่น { . . . . . . . . . . . . . . . }}

ตัวอย่าง

<ก่อน> นำเข้า java.util.ArrayList; นำเข้า java.util.List; นำเข้า java.util.Scanner; นำเข้า java.util.regex.Matcher; นำเข้า java.util.regex.Pattern; คลาสสาธารณะ MultipleRegex { โมฆะคงที่สาธารณะหลัก (สตริง [] args) { Scanner sc =สแกนเนอร์ใหม่ (System.in); System.out.println("ป้อนข้อมูลของคุณ:"); อินพุตสตริง =sc.nextLine(); //นิพจน์ทั่วไป String regex1 ="\\d{10}"; สตริง regex2 ="^[aeiou]"; //การสร้างวัตถุรูปแบบ Pattern pattern1 =Pattern.compile(regex1); รูปแบบ pattern2 =Pattern.compile(regex2); //การสร้างรายการวัตถุ List รูปแบบ =new ArrayList<>(); รูปแบบ.เพิ่ม(pattern1); รูปแบบ.เพิ่ม(pattern2); สำหรับ (รูปแบบรูปแบบ:รูปแบบ) { Matcher matcher =pattern.matcher (อินพุต); if(matcher.find()) { System.out.println("สำหรับ regex "+pattern.pattern()+" "+input+" ถูกต้อง"); } อื่น { System.out.println("สำหรับ regex "+pattern.pattern()+" "+input+" ไม่ถูกต้อง"); } } }}

ผลลัพธ์ 1

ป้อนข้อมูลของคุณ:9848033228For regex \d{10} 9848033228 is validFor regex ^[aeiou] 9848033228 is not valid

ผลลัพธ์ 2

ป้อนข้อมูลของคุณ:แอปเปิ้ลต่อวันช่วยให้แพทย์ไม่อยู่สำหรับ regex \d{10} แอปเปิ้ลต่อวันช่วยให้ห่างไกลแพทย์ไม่ถูกต้องสำหรับ regex ^[aeiou] แอปเปิ้ลต่อวันช่วยให้แพทย์ไม่อยู่