คำถามติดแท็ก pattern-matching

ใช้แท็กนี้สำหรับคำถามเกี่ยวกับการทดสอบว่าโครงสร้างข้อมูลมีรูปร่างเฉพาะหรือมีค่าเฉพาะในบางตำแหน่ง ภาษาที่ใช้งานได้จำนวนมากมีโครงสร้างการจับคู่รูปแบบ คำถามส่วนใหญ่ในแท็กนี้ควรมีแท็กสำหรับภาษาที่คุณกำลังเขียนโปรแกรมด้วยอย่าใช้แท็กนี้สำหรับคำถามการแสดงออกปกติให้ใช้ [regex] แทน ในทำนองเดียวกันสำหรับการจับคู่รูปแบบ (globbing) ในกระสุนแบบ POSIX ให้ใช้ [glob]

13
ฉันจะรู้ได้อย่างไรว่าสตริงซ้ำตัวเองใน Python หรือไม่
ฉันกำลังมองหาวิธีที่จะทดสอบว่าสตริงที่กำหนดนั้นทำซ้ำตัวเองสำหรับสตริงทั้งหมดหรือไม่ ตัวอย่าง: [ '0045662100456621004566210045662100456621', # '00456621' '0072992700729927007299270072992700729927', # '00729927' '001443001443001443001443001443001443001443', # '001443' '037037037037037037037037037037037037037037037', # '037' '047619047619047619047619047619047619047619', # '047619' '002457002457002457002457002457002457002457', # '002457' '001221001221001221001221001221001221001221', # '001221' '001230012300123001230012300123001230012300123', # '00123' '0013947001394700139470013947001394700139470013947', # '0013947' '001001001001001001001001001001001001001001001001001', # '001' '001406469760900140646976090014064697609', # '0014064697609' ] เป็นสตริงที่ซ้ำตัวเองและ [ '004608294930875576036866359447', '00469483568075117370892018779342723', '004739336492890995260663507109', '001508295625942684766214177978883861236802413273', '007518796992481203', '0071942446043165467625899280575539568345323741', '0434782608695652173913', '0344827586206896551724137931', '002481389578163771712158808933', '002932551319648093841642228739', '0035587188612099644128113879', …

11
ฉันจะใช้อักขระตัวแทนที่ตรงกันข้ามหรือเชิงลบเมื่อจับคู่รูปแบบในเชลล์ unix / linux ได้อย่างไร
ว่าฉันต้องการคัดลอกเนื้อหาของไดเรกทอรีที่ไม่รวมไฟล์และโฟลเดอร์ที่มีชื่อมีคำว่า 'Music' cp [exclude-matches] *Music* /target_directory สิ่งที่ควรแทนที่ [ไม่รวมการจับคู่] เพื่อทำสิ่งนี้ให้สำเร็จ

2
อะไรคือความแตกต่างระหว่าง“ x is null” และ“ x == null”?
ใน C # 7 เราสามารถใช้ if (x is null) return; แทน if (x == null) return; มีข้อได้เปรียบอะไรบ้างในการใช้วิธีการใหม่ (ตัวอย่างก่อนหน้า) ในแบบเก่า? ความหมายต่างกันหรือไม่? เป็นเรื่องของรสนิยมหรือไม่? ถ้าไม่ฉันควรใช้อันใดอันหนึ่งกับอีกอันหนึ่ง? อ้างอิง: มีอะไรใหม่ใน C # 7.0


4
`: _ *` (เครื่องหมายขีดเส้นใต้ของลำไส้ใหญ่) ทำอะไรในสกาลา?
ฉันมีรหัสต่อไปนี้จากคำถามนี้ : def addChild(n: Node, newChild: Node) = n match { case Elem(prefix, label, attribs, scope, child @ _*) => Elem(prefix, label, attribs, scope, child ++ newChild : _*) case _ => error("Can only add children to elements!") } ทุกอย่างในนั้นค่อนข้างชัดเจนยกเว้นงานชิ้นนี้: child ++ newChild : _* มันทำอะไร? ฉันเข้าใจว่ามีการSeq[Node]ต่อกันกับผู้อื่นNodeแล้วใช่ไหม อะไร: _*ทำอย่างไร

4
การใช้ตัวดำเนินการเปรียบเทียบในระบบจับคู่รูปแบบของ Scala
เป็นไปได้หรือไม่ที่จะเปรียบเทียบในการเปรียบเทียบโดยใช้ระบบจับคู่รูปแบบใน Scala ตัวอย่างเช่น: a match { case 10 => println("ten") case _ > 10 => println("greater than ten") case _ => println("less than ten") } คำสั่งกรณีที่สองนั้นผิดกฎหมาย แต่ฉันต้องการระบุ "เมื่อ a มากกว่า"

9
'Pattern Matching' ในภาษาที่ใช้งานได้คืออะไร?
ฉันกำลังอ่านเกี่ยวกับการเขียนโปรแกรมเชิงฟังก์ชันและฉันสังเกตเห็นว่าการจับคู่รูปแบบมีการกล่าวถึงในหลายบทความว่าเป็นหนึ่งในคุณสมบัติหลักของภาษาที่ใช้งานได้ ใครช่วยอธิบายสำหรับนักพัฒนา Java / C ++ / JavaScript ว่าหมายความว่าอย่างไร

5
การจับคู่กลุ่ม Ruby Regexp กำหนดตัวแปรใน 1 บรรทัด
ฉันกำลังพยายาม rexp สตริงเป็นตัวแปรหลายตัว สตริงตัวอย่าง: ryan_string = "RyanOnRails: This is a test" ฉันจับคู่กับ regexp นี้โดยมี 3 กลุ่ม: ryan_group = ryan_string.scan(/(^.*)(:)(.*)/i) ตอนนี้ในการเข้าถึงแต่ละกลุ่มฉันต้องทำสิ่งนี้: ryan_group[0][0] (first group) RyanOnRails ryan_group[0][1] (second group) : ryan_group[0][2] (third group) This is a test ดูเหมือนจะไร้สาระและรู้สึกว่าฉันทำอะไรผิด ฉันคาดหวังว่าจะสามารถทำสิ่งนี้ได้: g1, g2, g3 = ryan_string.scan(/(^.*)(:)(.*)/i) เป็นไปได้หรือไม่ หรือมีวิธีที่ดีกว่าที่ฉันกำลังทำอยู่?

3
การจับคู่รูปแบบใน Scala ถูกนำไปใช้ในระดับ bytecode อย่างไร?
การจับคู่รูปแบบใน Scala ถูกนำไปใช้ในระดับ bytecode อย่างไร? มันเหมือนกับชุดของif (x instanceof Foo)โครงสร้างหรืออย่างอื่น? ผลกระทบด้านประสิทธิภาพคืออะไร? ตัวอย่างเช่นเมื่อได้รับรหัสต่อไปนี้ (จากหน้าScala By Example 46-48) โค้ด Java ที่เทียบเท่าสำหรับevalวิธีการจะเป็นอย่างไร abstract class Expr case class Number(n: Int) extends Expr case class Sum(e1: Expr, e2: Expr) extends Expr def eval(e: Expr): Int = e match { case Number(x) => x case Sum(l, r) …

9
วิธีเลือกเส้นระหว่างรูปแบบเครื่องหมายสองรูปแบบซึ่งอาจเกิดขึ้นหลายครั้งด้วย awk / sed
ใช้awkหรือsedฉันจะเลือกเส้นที่เกิดขึ้นระหว่างรูปแบบเครื่องหมายสองแบบที่แตกต่างกันได้อย่างไร อาจมีหลายส่วนที่ทำเครื่องหมายด้วยรูปแบบเหล่านี้ ตัวอย่างเช่นสมมติว่าไฟล์มี: abc def1 ghi1 jkl1 mno abc def2 ghi2 jkl2 mno pqr stu และรูปแบบเริ่มต้นคือabcและรูปแบบสิ้นสุดคือmno ดังนั้นฉันต้องการผลลัพธ์เป็น: def1 ghi1 jkl1 def2 ghi2 jkl2 ฉันใช้ sed เพื่อจับคู่รูปแบบครั้งเดียว: sed -e '1,/abc/d' -e '/mno/,$d' <FILE> มีวิธีใดsedหรือawk ต้องทำซ้ำ ๆ จนจบไฟล์?

8
รูปแบบประสิทธิภาพของแบบสอบถาม PostgreSQL LIKE
ฉันเห็นการเปลี่ยนแปลงค่อนข้างมากในเวลาตอบสนองเกี่ยวกับการLIKEสืบค้นตารางใดตารางหนึ่งในฐานข้อมูลของฉัน บางครั้งฉันจะได้ผลลัพธ์ภายใน 200-400 มิลลิวินาที (ยอมรับได้มาก) แต่บางครั้งอาจใช้เวลามากถึง 30 วินาทีในการส่งคืนผลลัพธ์ ฉันเข้าใจว่าLIKEข้อความค้นหามีทรัพยากรมาก แต่ฉันไม่เข้าใจว่าทำไมเวลาตอบกลับจึงมีความแตกต่างกันมาก ฉันได้สร้างดัชนี btree บนowner1สนาม แต่ฉันไม่คิดว่ามันจะช่วยในการLIKEสืบค้น ใครมีไอเดียบ้าง SQL ตัวอย่าง: SELECT gid, owner1 FORM parcels WHERE owner1 ILIKE '%someones name%' LIMIT 10 ฉันได้ลองแล้ว: SELECT gid, owner1 FROM parcels WHERE lower(owner1) LIKE lower('%someones name%') LIMIT 10 และ: SELECT gid, owner1 FROM parcels WHERE lower(owner1) …

1
เหตุใดการจับคู่รูปแบบใน Scala จึงไม่ทำงานกับตัวแปร
ใช้ฟังก์ชันต่อไปนี้: def fMatch(s: String) = { s match { case "a" => println("It was a") case _ => println("It was something else") } } รูปแบบนี้เข้ากันได้ดี: scala> fMatch("a") It was a scala> fMatch("b") It was something else สิ่งที่ฉันอยากจะทำได้มีดังต่อไปนี้: def mMatch(s: String) = { val target: String = "a" s match { …

11
Javascript ไม่ชัดเจนการค้นหาที่เหมาะสม
ฉันกำลังมองหาไลบรารี JavaScript การค้นหาที่คลุมเครือเพื่อกรองอาร์เรย์ ฉันได้ลองใช้fuzzyset.jsและfuse.jsแล้ว แต่ผลลัพธ์แย่มาก (มีการสาธิตที่คุณสามารถลองได้ในหน้าที่เชื่อมโยง) หลังจากอ่านข้อมูลเกี่ยวกับระยะทาง Levenshtein แล้วมันทำให้ฉันรู้สึกแย่เพราะประมาณว่าผู้ใช้กำลังมองหาอะไรเมื่อพวกเขาพิมพ์ สำหรับผู้ที่ไม่ทราบว่าระบบจะคำนวณว่าหลายแทรก , ลบและแทนมีความจำเป็นที่จะทำให้สองสายตรง ข้อบกพร่องที่เห็นได้ชัดอย่างหนึ่งซึ่งได้รับการแก้ไขในแบบจำลอง Levenshtein-Demerau คือทั้งblubและboobถือว่าใกล้เคียงกับbulb (แต่ละอันต้องใช้การทดแทนสองครั้ง) มันเป็นที่ชัดเจน แต่ที่หลอดไฟมีมากขึ้นคล้ายกับร้องไห้สะอึกสะอื้นกว่าคนโง่และเป็นรูปแบบที่ผมกล่าวถึงเพียงตระหนักดีว่าโดยให้transpositions ฉันต้องการใช้สิ่งนี้ในบริบทของการเติมข้อความดังนั้นหากฉันมีอาร์เรย์['international', 'splint', 'tinder']และข้อความค้นหาของฉันเป็นintฉันคิดว่านานาชาติควรมีอันดับสูงกว่าเฝือกแม้ว่าในอดีตจะมีคะแนน (สูงกว่า = แย่กว่า) ถึง 10 เทียบกับของหลัง 3. สิ่งที่ฉันกำลังมองหา (และจะสร้างขึ้นหากไม่มี) คือไลบรารีที่ทำสิ่งต่อไปนี้: ให้น้ำหนักการปรับแต่งข้อความต่างๆ การชั่งน้ำหนักแต่ละการจัดการจะแตกต่างกันไปขึ้นอยู่กับตำแหน่งที่ปรากฏในคำหนึ่ง (การปรับเปลี่ยนในช่วงแรกมีค่าใช้จ่ายสูงกว่าการจัดการในช่วงปลาย) ส่งคืนรายการผลลัพธ์ที่เรียงตามความเกี่ยวข้อง มีใครเจออะไรแบบนี้บ้าง? ฉันตระหนักดีว่า StackOverflow ไม่ใช่สถานที่ที่จะขอคำแนะนำซอฟต์แวร์ แต่โดยนัย (ไม่ใช่อีกต่อไป!) ในด้านบนคือ: ฉันคิดเกี่ยวกับวิธีนี้ถูกต้องหรือไม่? แก้ไข ฉันพบกระดาษดีๆ (pdf)ในหัวข้อนี้ หมายเหตุและข้อความที่ตัดตอนมาบางส่วน: ฟังก์ชั่นการแก้ไขระยะห่างจะกำหนดต้นทุนที่ค่อนข้างต่ำให้กับลำดับการแทรกหรือการลบ ฟังก์ชันระยะทาง Monger-Elkan …

3
จับคู่คลาสเคสต่างๆใน scala
ฉันกำลังจับคู่กับคลาสเคสบางอย่างและต้องการจัดการสองเคสในลักษณะเดียวกัน สิ่งนี้: abstract class Foo case class A extends Foo case class B(s:String) extends Foo case class C(s:String) extends Foo def matcher(l: Foo): String = { l match { case A() => "A" case B(sb) | C(sc) => "B" case _ => "default" } } แต่เมื่อฉันทำสิ่งนี้ฉันได้รับข้อผิดพลาด: (fragment of test.scala):10: error: …

1
Elm Compiler ทำงานตลอดไปคอมพิวเตอร์เริ่มร้อน
ฉันไม่แน่ใจว่าอะไรเป็นสาเหตุของปัญหานี้ แต่ในโปรเจ็กต์ฉันกำลังสร้างคอมไพเลอร์ใช้เวลาหลายชั่วโมงในการคอมไพล์โมดูล ขนาดรวมของ codebase ของฉันคือ 352KB แต่ไม่มีโมดูลใดที่มีขนาดใหญ่เกิน 10KB ฉันใช้พอร์ต Native แต่มันเป็นเรื่องเล็กน้อยมาก ฉันแค่ดึงDate.now()มันมา มีอะไรที่รู้จักกันดีที่จะทำให้คอมไพเลอร์ elm ต้องใช้เวลาตลอดไปในการรวบรวม? ฉันไม่มีการอ้างอิงมากนัก แต่ฉันใช้ Html เป็นจำนวนมาก ฉันจะขอบคุณคำแนะนำใด ๆ เกี่ยวกับสิ่งที่จะทำให้เกิดสิ่งนี้ แก้ไข ดังนั้นปรากฎว่านิพจน์กรณีใหญ่จะทำให้เครื่องมือเพิ่มประสิทธิภาพใช้เวลานานโดยเท่ากับ 0.16 นี่คือการอภิปราย on Elm-พูดคุยนำขึ้นปัญหาและสรุปสาระสำคัญของการจับคู่กรณีที่น่ารังเกียจ ฉันเดาว่าต้องละเอียดและเก็บแครอทไว้ที่นั่นทำไมคอมไพเลอร์ของ elm ถึงใช้เส้นทางนี้สำหรับการจับคู่กรณี เกิดอะไรขึ้นที่นี่? เหตุใดคอมไพเลอร์จึงใช้เวลานานกว่าหนึ่งชั่วโมงในการปรับแต่งรูปแบบที่ตรงกันกว่า 60+ รูปแบบในคำสั่ง case

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.