แบล็กเบอร์รี่ 6 Regex

ฉันมี regex สำหรับ BlackBerry 6

Mozilla/5.0 (BlackBerry; U; BlackBerry (?'deviceName'\w+); en-US) AppleWebKit/534.11+ (KHTML เช่น Gecko) Version/(?'version'(?'major'\d+)(.( ?'minor'\d+)?)\w*) Safari มือถือ/534.11+

แต่ดูเหมือนจะไม่ตรงกับสตริงนี้:

Mozilla/5.0 (BlackBerry; U; BlackBerry AAAA; en-US) AppleWebKit/534.11+ (KHTML เช่น Gecko) เวอร์ชัน/X.X.X.X Mobile Safari/534.11+

เกิดอะไรขึ้น? ซึ่งอยู่ในไฟล์คำจำกัดความของเบราว์เซอร์สำหรับ .NET 4.0

หมายเหตุ: ด้วยเหตุผลบางประการ ตัวแก้ไขจึงไม่แสดงอักขระที่ใช้ Escape ของฉันเช่นกัน ทั้งหมด / ถูกหลบหนี


person Matt Hudson    schedule 15.07.2011    source แหล่งที่มา


คำตอบ (1)


สมมติว่าสตริงอินพุตของคุณมีเวอร์ชันตัวเลขจริงๆ เช่น 6.5.4.3 แทนที่จะเป็น X.X.X.X regex ต่อไปนี้จะตรงกัน:

@"Mozilla\/5.0 \(BlackBerry; U; BlackBerry (?'deviceName'\w+); en-US\) AppleWebKit\/534\.11\+ \(KHTML, like Gecko\) Version\/(?'version'(?'major'\d+)(.(?'minor'\d+)?)[\.\w]*) Mobile Safari\/534\.11\+"

นอกจากจะต้องยกเว้นอักขระ /().+ ทั้งหมดแล้ว regex ของคุณยังไม่ตรงกับสององค์ประกอบสุดท้ายของหมายเลขเวอร์ชัน เนื่องจากคลาสอักขระ \w ไม่ตรงกับอักขระจุด

person Thomas Gerstendörfer    schedule 15.07.2011