Score:0

การทดสอบนิพจน์ทั่วไป

ธง eg

ฉันกำลังพยายามเรียนรู้ Regular Expression และพบตัวอย่างบางส่วนทางออนไลน์ พยายามรวบรวมสิ่งต่าง ๆ ฉันป้อนสิ่งนี้ลงใน bash

^(([a-j][a-j]?)|(3[a-j][a-j])$

มันส่งคืนข้อผิดพลาดต่อไปนี้

ทุบตี: !!: ไม่พบกิจกรรม

ทำไมคุณถึงเชื่อว่าฉันได้รับสิ่งนั้น? ฉันควรสร้างไฟล์ a ถึง j หรือไม่ หรือฉันควรสร้าง 1 ไฟล์ที่มี a-j อยู่ในนั้น ทำไมมันกลับเป็นอย่างนั้น? ขอขอบคุณสำหรับความช่วยเหลือของคุณ.

fo flag
โปรดแสดงอย่างชัดเจนว่าคุณใช้สิ่งนั้นอย่างไรตัดและวางถ้าเป็นไปได้
Smokefox avatar
eg flag
สวัสดีเกลน ฉันแค่ทดสอบตามที่ฉันป้อนไว้ด้านบน เช่น. ฉันทดสอบ ^/([0-9])|([0-9])$ และฉันได้รับข้อผิดพลาดอื่น "การแทนที่ล้มเหลว" ดังนั้นฉันแค่พยายามเข้าใจแก่นแท้ของมัน ฉันได้อ่านบทความต่าง ๆ เกี่ยวกับนิพจน์ แต่ต้องการความช่วยเหลือในการทำความเข้าใจ
fo flag
คุณแค่พิมพ์มันลงใน bash prompt เหรอ? คุณคาดว่าจะเกิดอะไรขึ้น? ในแบช คุณสามารถใช้นิพจน์ทั่วไปเป็นส่วนหนึ่งของคำสั่งเงื่อนไข `[[ $var =~ regex ]]` เท่านั้น ดู [3.2.5.2 โครงสร้างแบบมีเงื่อนไข](https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs)
ph flag
ไวยากรณ์ของเชลล์นั้นขึ้นอยู่กับบริบทอย่างมาก bash จะถือว่าบางสิ่งเป็นนิพจน์ทั่วไปหากเกิดขึ้นในที่ที่ bash คาดว่าจะเห็นนิพจน์ทั่วไป (เช่น ใน `[[ $var =~ regex ]]`) เนื่องจากคุณใช้สิ่งนั้นในบริบทคำสั่งทั่วไป bash จึงเห็น `^` และตีความว่าเป็นการแทนที่ประวัติคำสั่ง (เช่น มันคิดว่าคุณกำลังบอกให้เรียกคืนและใช้บางส่วนของคำสั่งก่อนหน้าซ้ำ) เพราะนั่นคือสิ่งที่ `^` หมายถึงในบริบทคำสั่งทั่วไป แต่ไม่พบคำสั่งก่อนหน้าที่ตรงกัน ("เหตุการณ์") ดังนั้นคุณจะได้รับข้อผิดพลาด "ไม่พบเหตุการณ์"
Smokefox avatar
eg flag
@glennjackman ขอบคุณนั่นคือคำตอบที่ฉันต้องการ
Smokefox avatar
eg flag
@GordonDavisson ขอบคุณสำหรับรายละเอียดของเรื่องนี้ ตอนนี้ฉันเข้าใจดีขึ้นแล้ว
us flag
คุณสามารถใช้ https://regexr.com เพื่อเล่นกับนิพจน์ทั่วไป

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา