คำถามติดแท็ก regex

นิพจน์ทั่วไปจัดเตรียมภาษาที่ประกาศเพื่อจับคู่รูปแบบภายในสตริง โดยทั่วไปจะใช้สำหรับการตรวจสอบความถูกต้องสตริงการแยกวิเคราะห์และการแปลง เนื่องจากนิพจน์ทั่วไปนั้นไม่ได้มาตรฐานอย่างสมบูรณ์คำถามทั้งหมดที่มีแท็กนี้จึงควรมีแท็กที่ระบุภาษาการเขียนโปรแกรมหรือเครื่องมือที่เกี่ยวข้อง หมายเหตุ: การขอ HTML, JSON และอื่น ๆ regex มีแนวโน้มที่จะพบกับปฏิกิริยาเชิงลบ หากมีการแยกวิเคราะห์มันใช้ที่แทน


5
อะไรคือความแตกต่างระหว่าง "กลุ่ม" และ "จับ" ในการแสดงออกปกติ. NET
ฉันสับสนเล็กน้อยเกี่ยวกับความแตกต่างระหว่าง "กลุ่ม" และ "การจับภาพ" เมื่อพูดถึงภาษานิพจน์ปกติของ. NET พิจารณารหัส C # ต่อไปนี้: MatchCollection matches = Regex.Matches("{Q}", @"^\{([A-Z])\}$"); ฉันคาดว่าสิ่งนี้จะส่งผลให้มีการจับตัวเดียวสำหรับตัวอักษร 'Q' แต่ถ้าฉันพิมพ์คุณสมบัติของที่ส่งคืนMatchCollectionฉันเห็น: matches.Count: 1 matches[0].Value: {Q} matches[0].Captures.Count: 1 matches[0].Captures[0].Value: {Q} matches[0].Groups.Count: 2 matches[0].Groups[0].Value: {Q} matches[0].Groups[0].Captures.Count: 1 matches[0].Groups[0].Captures[0].Value: {Q} matches[0].Groups[1].Value: Q matches[0].Groups[1].Captures.Count: 1 matches[0].Groups[1].Captures[0].Value: Q เกิดอะไรขึ้นที่นี่? ฉันเข้าใจว่ายังมีการจับภาพสำหรับการแข่งขันทั้งหมด แต่กลุ่มจะเข้ามาได้อย่างไร และทำไมไม่matches[0].Capturesรวมการจับภาพตัวอักษร 'Q' ด้วย?
161 c#  .net  regex 

5
ค้นหาและแทนที่ด้วย bash โดยใช้นิพจน์ทั่วไป
ฉันเคยเห็นตัวอย่างนี้: hello=ho02123ware38384you443d34o3434ingtod38384day echo ${hello//[0-9]/} ซึ่งตามไวยากรณ์นี้: ${variable//pattern/replacement} น่าเสียดายที่patternเขตข้อมูลนั้นดูเหมือนจะไม่สนับสนุนไวยากรณ์แบบเต็มของ regex (ถ้าฉันใช้.หรือ\sตัวอย่างเช่นมันพยายามจับคู่อักขระตามตัวอักษร) ฉันจะค้นหา / แทนที่สตริงโดยใช้ไวยากรณ์ regex แบบเต็มได้อย่างไร
161 regex  bash 

15
ฉันจะจับคู่การเกิดขึ้นหลายครั้งกับ regex ใน JavaScript คล้ายกับ preg_match_all ของ PHP ได้อย่างไร
ฉันพยายามที่จะสตริงเข้ารหัส URL แยกที่มีการสร้างขึ้นของคีย์ = คู่ค่าแยกจากกันโดยทั้งสองหรือ&& รายการต่อไปนี้จะจับคู่เหตุการณ์ที่เกิดขึ้นครั้งแรกโดยแยกคีย์และค่าออกเป็นองค์ประกอบผลลัพธ์แยกต่างหาก: var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/) ผลลัพธ์สำหรับสตริง '1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' จะเป็น: ['1111342', 'Adam%20Franco'] การใช้ค่าสถานะโกลบอล 'g' จะจับคู่กับสิ่งที่เกิดขึ้นทั้งหมด แต่จะคืนค่าสตริงย่อยที่จับคู่อย่างสมบูรณ์ไม่ใช่คีย์และค่าที่คั่นด้วย: var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/g) ผลลัพธ์สำหรับสตริง '1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' จะเป็น: ['1111342=Adam%20Franco', '&348572=Bob%20Jones'] ในขณะที่ฉันสามารถแยกสตริง&และแยกแต่ละคู่คีย์ / ค่าแต่ละมีวิธีการใช้การสนับสนุนการแสดงออกปกติของ JavaScript เพื่อให้ตรงกับหลายรูปแบบ/(?:&|&)?([^=]+)=([^&]+)/คล้ายกับpreg_match_all()ฟังก์ชั่นของ PHP …
160 javascript  regex 

6
สร้างอาร์เรย์ของการจับคู่ regex
ใน Java ฉันพยายามคืนค่าการจับคู่ regex ทั้งหมดไปยังอาร์เรย์ แต่ดูเหมือนว่าคุณสามารถตรวจสอบได้ว่ารูปแบบนั้นตรงกับบางสิ่งหรือไม่ (บูลีน) ฉันจะใช้การจับคู่ regex ในรูปแบบอาร์เรย์ของสตริงทั้งหมดที่ตรงกับการแสดงออกของ regex ในสตริงที่กำหนดได้อย่างไร
160 java  regex 

7
การแก้ไขสตริงให้เป็น regex
ฉันต้องการแทนที่ค่าของสตริงเป็นการแสดงออกปกติของฉันในทับทิม มีวิธีง่ายๆในการทำเช่นนี้หรือไม่? ตัวอย่างเช่น: foo = "0.0.0.0" goo = "here is some other stuff 0.0.0.0" if goo =~ /value of foo here dynamically/ puts "success!" end
160 ruby  regex 

6
แปลงถ่านเป็นตัวพิมพ์ใหญ่โดยใช้นิพจน์ทั่วไป (EditPad Pro)
ฉันเขียนนิพจน์ปกติด้วยความหวังว่าฉันจะสามารถแทนที่ทุกการแข่งขัน (นั่นเป็นเพียงตัวอักษรตัวหนึ่ง) เป็นตัวพิมพ์ใหญ่ ฉันใช้ EditPad Pro (แต่ฉันยินดีที่จะใช้เครื่องมืออื่น ๆ ที่จะอนุญาตให้ฉันทำเช่นนี้ตราบใดที่มีอิสระที่จะลองเพราะฉันต้องทำสิ่งนี้เพียงครั้งเดียวเท่านั้น) พื้นหลัง:ฉันมีไฟล์ข้อความที่ยาวมากซึ่งใช้โดยแอปพลิเคชันที่มีตัวอักษรตัวพิมพ์เล็กและคำบางคำเริ่มต้นด้วยตัวพิมพ์เล็กแทนที่จะเป็นตัวพิมพ์ใหญ่ดังนั้นจึงทำให้แอปพลิเคชันหยุดทำงาน สิ่งนี้จะใช้เวลานานในการทำด้วยมือและมันค่อนข้างซับซ้อนที่จะทำโดยไม่มีการแสดงออกอย่างสม่ำเสมอเพราะการเกิดตัวพิมพ์เล็ก (ชั่ว) ตัวพิมพ์เล็กนั้นเฉพาะเจาะจงมาก ฉันได้เขียนนิพจน์ปกติที่เลือกและตอนนี้ฉันสามารถใช้กับ backreference ($ 1 ใช้ได้ดี) แต่ฉันไม่สามารถแทนที่ด้วยอักขระตัวพิมพ์ใหญ่ ฉันคิดว่า \ u $ 1 จะใช้งานได้ แต่มันไม่ได้อยู่ใน EditPad Pro หากไม่มีเครื่องมือฟรีช่วยให้ฉันทำเช่นนี้ฉันเดาว่าทางเลือกอื่นจะทำใน C # แต่ฉันก็รีบหน่อยและไม่ได้อยู่ใกล้คอมไพเลอร์ดังนั้นฉันต้องดาวน์โหลดรุ่นด่วนก่อนดังนั้น ... มันจะดีกว่าถ้าหาเครื่องมือที่รองรับคุณสมบัติเช่นนี้! ขอบคุณ!
159 regex 

5
เทียบ linebreaks - \ n หรือ \ r \ n?
ในขณะที่เขียนคำตอบนี้ฉันต้องจับคู่เฉพาะกับการกระจายบรรทัดแทนการใช้s-flag ( dotall- จุดจับคู่การกระจายบรรทัด) เว็บไซต์ที่มักจะใช้ในการทดสอบการแสดงออกปกติทำงานแตกต่างกันเมื่อพยายามที่จะจับคู่หรือ\n\r\n ฉันสังเกตเห็น Regex101 จับคู่ linebreaks เฉพาะใน\n ( ตัวอย่าง - ลบ\rและตรงกับ) RegExr จับคู่ linebreaks ไม่ว่าบน\n หรือบน\r\n และฉันไม่พบสิ่งที่จะทำให้ตรงกับ linebreak ยกเว้นm-flag และ\s ( ตัวอย่าง ) Debuggex มีพฤติกรรมที่แตกต่างกันมากขึ้น: ในตัวอย่างนี้ตรงกับเฉพาะใน\r\nขณะ ที่ตรงนี้เท่านั้นที่ตรง\nกับด้วยธงและเครื่องยนต์เดียวกันที่ระบุ ฉันตระหนักถึงm-flag (หลายบรรทัด- ทำให้^ตรงกับจุดเริ่มต้นและ$จุดสิ้นสุดของบรรทัด) แต่บางครั้งนี่ไม่ใช่ตัวเลือก เช่นเดียวกับ\sตรงกับแท็บและช่องว่างเช่นกัน ความคิดของฉันในการใช้อักขระขึ้นบรรทัดใหม่ของ Unicode ( \u0085) ไม่ประสบความสำเร็จดังนั้น: มีวิธีที่ไม่ปลอดภัยหรือไม่ที่จะรวมการแข่งขันใน linebreak (โดยเฉพาะอย่างยิ่งโดยไม่คำนึงถึงภาษาที่ใช้) ในการแสดงออกปกติ? เหตุใดเว็บไซต์ที่กล่าวถึงข้างต้นจึงมีพฤติกรรมแตกต่างกัน (โดยเฉพาะ Debuggex การจับคู่ครั้งเดียว\nและครั้งเดียวเท่านั้น\r\n)

12
ฉันจะแปลง CamelCase เป็นชื่อที่มนุษย์สามารถอ่านได้ใน Java ได้อย่างไร?
ฉันต้องการเขียนวิธีการที่แปลง CamelCase เป็นชื่อที่มนุษย์อ่านได้ นี่คือกรณีทดสอบ: public void testSplitCamelCase() { assertEquals("lowercase", splitCamelCase("lowercase")); assertEquals("Class", splitCamelCase("Class")); assertEquals("My Class", splitCamelCase("MyClass")); assertEquals("HTML", splitCamelCase("HTML")); assertEquals("PDF Loader", splitCamelCase("PDFLoader")); assertEquals("A String", splitCamelCase("AString")); assertEquals("Simple XML Parser", splitCamelCase("SimpleXMLParser")); assertEquals("GL 11 Version", splitCamelCase("GL11Version")); }


14
ลบศูนย์ต่อท้ายที่ไม่มีนัยสำคัญออกจากตัวเลขหรือไม่
ฉันพลาดการเรียก API มาตรฐานที่ลบเลขศูนย์ที่ไม่มีนัยสำคัญต่อท้ายออกจากตัวเลขหรือไม่? อดีต var x = 1.234000 // to become 1.234; var y = 1.234001; // stays 1.234001 Number.toFixed () และ Number.toPrecision () ไม่ใช่สิ่งที่ฉันกำลังมองหา

3
RegEx เพื่อให้แน่ใจว่าสตริงมีอักขระตัวพิมพ์เล็กอย่างน้อยหนึ่งตัวอักขระตัวพิมพ์ใหญ่ตัวเลขและสัญลักษณ์
regex คืออะไรเพื่อให้แน่ใจว่าสตริงที่กำหนดมีอักขระอย่างน้อยหนึ่งตัวจากแต่ละหมวดหมู่ต่อไปนี้ อักขระตัวพิมพ์เล็ก ตัวพิมพ์ใหญ่ หลัก สัญลักษณ์ ฉันรู้ว่ารูปแบบสำหรับแต่ละชุดคือ[a-z], [A-Z], \dและ_|[^\w](ฉันได้พวกเขาแก้ไขไม่ได้ฉัน?) แต่ฉันจะรวมมันเพื่อให้แน่ใจว่าสตริงมีสิ่งเหล่านี้ในลำดับใด ๆ ได้อย่างไร
156 regex 




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