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

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

8
java.util.regex - ความสำคัญของ Pattern.compile ()?
ความสำคัญของPattern.compile()วิธีการคืออะไร? เหตุใดฉันจึงต้องคอมไพล์สตริง regex ก่อนที่จะรับMatcherวัตถุ ตัวอย่างเช่น : String regex = "((\\S+)\\s*some\\s*"; Pattern pattern = Pattern.compile(regex); // why do I need to compile Matcher matcher = pattern.matcher(text);
118 java  regex 

5
แปลงสตริงเป็นทับทิมนิพจน์ทั่วไป
ฉันต้องการแปลงสตริงเช่น "/ [\ w \ s] + /" เป็นนิพจน์ทั่วไป "/[\w\s]+/" => /[\w\s]+/ ฉันลองใช้Regexpวิธีต่างๆเช่น: Regexp.new("/[\w\s]+/") => /\/[w ]+\//ในทำนองเดียวกันRegexp.compileและRegexp.escape. แต่ไม่มีผลตอบแทนตามที่ฉันคาดไว้ เพิ่มเติมฉันลองลบแบ็กสแลช: Regexp.new("[\w\s]+") => /[w ]+/ แต่ไม่มีโชค. จากนั้นฉันก็พยายามทำมันง่ายๆ: str = "[\w\s]+" => "[w ]+" มันหนีไป ตอนนี้สตริงจะยังคงเหมือนเดิมและแปลงเป็นวัตถุ regexp ได้อย่างไร
118 ruby  regex  string  ruby-1.9.3 

6
อะไรคือความแตกต่างระหว่าง ?:, ?! และ? = ใน regex?
ฉันค้นหาความหมายของนิพจน์เหล่านี้ แต่ไม่เข้าใจความแตกต่างที่แท้จริงระหว่างนิพจน์เหล่านี้ นี่คือสิ่งที่พวกเขาพูด: ?: จับคู่นิพจน์ แต่อย่าจับมัน ?= จับคู่คำต่อท้าย แต่ไม่รวมไว้ในการจับภาพ ?! จับคู่หากไม่มีคำต่อท้าย ฉันลองใช้สิ่งเหล่านี้ใน RegEx อย่างง่ายและได้ผลลัพธ์ที่คล้ายกันสำหรับทุกคน ตัวอย่าง: 3 นิพจน์ต่อไปนี้ให้ผลลัพธ์ที่คล้ายกันมาก [a-zA-Z0-9._-]+@[a-zA-Z0-9-]+(?!\.[a-zA-Z0-9]+)* [a-zA-Z0-9._-]+@[a-zA-Z0-9-]+(?=\.[a-zA-Z0-9]+)* [a-zA-Z0-9._-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9]+)*
118 javascript  regex 

9
เหตุใดจึงไม่สามารถใช้ regex เพื่อแยกวิเคราะห์ HTML / XML: คำอธิบายอย่างเป็นทางการในแง่ของคนธรรมดา
ไม่มีวันใดใน SO ที่ผ่านไปโดยไม่มีคำถามเกี่ยวกับการแยกวิเคราะห์ (X) HTML หรือ XML ด้วยนิพจน์ทั่วไปที่ถูกถาม แม้ว่าจะค่อนข้างง่ายที่จะสร้างตัวอย่างที่แสดงให้เห็นถึงความไม่เป็นไปได้ของ regexes สำหรับงานนี้หรือด้วยชุดของนิพจน์เพื่อแสดงถึงแนวคิด แต่ฉันยังไม่พบคำอธิบายอย่างเป็นทางการเกี่ยวกับ SO ใน SO ว่าทำไมสิ่งนี้ถึงไม่สามารถทำได้ในคนธรรมดา เงื่อนไข คำอธิบายที่เป็นทางการเพียงอย่างเดียวที่ฉันสามารถพบได้ในเว็บไซต์นี้อาจถูกต้องมาก แต่ก็ค่อนข้างคลุมเครือสำหรับโปรแกรมเมอร์ที่เรียนรู้ด้วยตนเอง: ข้อบกพร่องที่นี่คือ HTML เป็นไวยากรณ์ Chomsky Type 2 (ไวยากรณ์ฟรีบริบท) และ RegEx เป็นไวยากรณ์ Chomsky Type 3 (นิพจน์ทั่วไป) หรือ: นิพจน์ทั่วไปจับคู่ได้เฉพาะภาษาปกติ แต่ HTML เป็นภาษาที่ไม่มีบริบท หรือ: หุ่นยนต์ จำกัด (ซึ่งเป็นโครงสร้างข้อมูลที่อยู่ภายใต้นิพจน์ทั่วไป) ไม่มีหน่วยความจำนอกเหนือจากสถานะที่อยู่ในนั้นและหากคุณมีการซ้อนทับกันโดยพลการคุณต้องมีหุ่นยนต์ขนาดใหญ่ตามอำเภอใจซึ่งชนกับแนวคิดของออโตเมตัน จำกัด หรือ: คำศัพท์ Pumping สำหรับภาษาทั่วไปคือสาเหตุที่คุณไม่สามารถทำเช่นนั้นได้ [เพื่อความเป็นธรรม: คำอธิบายข้างต้นส่วนใหญ่เชื่อมโยงไปยังหน้าวิกิพีเดีย …

10
ฉันจะตรวจสอบความถูกต้องของสตริงเพื่ออนุญาตเฉพาะอักขระที่เป็นตัวอักษรและตัวเลขในนั้นได้อย่างไร
ฉันจะตรวจสอบความถูกต้องของสตริงโดยใช้นิพจน์ทั่วไปเพื่ออนุญาตเฉพาะอักขระที่เป็นตัวอักษรและตัวเลขในนั้นได้อย่างไร (ฉันไม่ต้องการให้เว้นวรรคเช่นกัน)
117 c#  regex 

1
รองรับ regex แบบหลายบรรทัดใน Vim
ฉันสังเกตเห็นว่าไวยากรณ์ regex มาตรฐานสำหรับการจับคู่ข้ามหลายบรรทัดคือการใช้ / s ดังนี้: This is\nsome text /This.*text/s สิ่งนี้ใช้งานได้ใน Perl แต่ดูเหมือนจะไม่รองรับใน Vim แต่ฉันต้องเจาะจงมากขึ้น: /This[^\r\n]*[\r\n]*text/ ฉันไม่พบเหตุผลใด ๆ ว่าทำไมจึงควรเป็นเช่นนี้ดังนั้นฉันคิดว่าฉันอาจพลาดบิตที่เกี่ยวข้องในความช่วยเหลือเป็นกลุ่ม ใครสามารถยืนยันพฤติกรรมนี้ไม่ทางใดก็ทางหนึ่งได้หรือไม่?
117 regex  vim 

12
นิพจน์ทั่วไปสำหรับตัวเลขทศนิยม
ฉันมีงานที่ต้องจับคู่ตัวเลขทศนิยม ฉันได้เขียนนิพจน์ทั่วไปต่อไปนี้สำหรับมัน: [-+]?[0-9]*\.?[0-9]* แต่ส่งกลับข้อผิดพลาด: Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ ) ตามความรู้ของฉันเราจำเป็นต้องใช้อักขระหลบหนีสำหรับสิ่ง.นี้ด้วย โปรดแก้ไขฉันว่าฉันผิดตรงไหน
117 regex 

3
แยกสตริงในช่องว่างใน Go?
ระบุสตริงอินพุตเช่น" word1 word2 word3 word4 "อะไรคือวิธีที่ดีที่สุดในการแบ่งสิ่งนี้เป็นอาร์เรย์ของสตริงใน Go? โปรดทราบว่าจะมีใด ๆจำนวนช่องว่างหรืออักขระ Unicode ระยะห่างระหว่างแต่ละคำ ใน Java ฉันจะใช้someString.trim().split("\\s+"). (หมายเหตุ: สตริงการแยกที่ซ้ำกันที่เป็นไปได้โดยใช้นิพจน์ทั่วไปใน Goไม่ได้ให้คำตอบที่มีคุณภาพดีใด ๆ โปรดให้ตัวอย่างจริงไม่ใช่แค่ลิงก์ไปยังการอ้างอิงregexpหรือstringsแพ็กเกจ)
117 regex  go 

7
คำถาม regex แยก Javascript
สวัสดีฉันกำลังลองสิ่งที่คิดว่าน่าจะเป็น regex ที่ค่อนข้างง่ายใน Javascript แต่ทำให้ฉันมีปัญหามากมาย ฉันต้องการความสามารถในการแบ่งวันที่ผ่านการแยกจาวาสคริปต์ด้วย '-', '.', '/' และ '' var date = "02-25-2010"; var myregexp2 = new RegExp("-."); dateArray = date.split(myregexp2); regex ที่ถูกต้องสำหรับสิ่งนี้คืออะไรและความช่วยเหลือทั้งหมดจะดีมาก
116 javascript  regex  split 

4
ฉันสามารถใช้ OR ใน regex โดยไม่จับสิ่งที่แนบมาได้หรือไม่?
ฉันใช้rubular.comเพื่อสร้าง regex และเอกสารของพวกเขาอธิบายสิ่งต่อไปนี้: (...) Capture everything enclosed (a|b) a or b ฉันจะใช้นิพจน์ OR โดยไม่จับสิ่งที่อยู่ในนั้นได้อย่างไร ตัวอย่างเช่นพูดว่าฉันต้องการจับภาพ "ac" หรือ "bc" ฉันใช้นิพจน์ทั่วไปไม่ได้ (a|b)(c) ขวา? ตั้งแต่นั้นมาฉันก็จับ "a" หรือ "b" ในกลุ่มหนึ่งและ "c" ในอีกกลุ่มหนึ่งไม่เหมือนกัน ฉันรู้ว่าฉันสามารถกรองผลการค้นหาได้ แต่ดูเหมือนว่าจะได้ผลมากกว่า ... ฉันขาดอะไรบางอย่างที่ชัดเจนหรือไม่? ฉันใช้สิ่งนี้ใน Java หากเป็นไปตามนั้น


14
Regex เพื่อรับสตริงระหว่างวงเล็บปีกกา
น่าเสียดายที่แม้ว่าจะพยายามเรียนรู้ regex อย่างน้อยปีละหนึ่งครั้งเป็นเวลาหลายปีเท่าที่ฉันจำได้ แต่ฉันก็มักจะลืมไปเมื่อฉันใช้มันไม่บ่อยนัก ในปีนี้มีความละเอียดปีใหม่ของฉันคือการไม่พยายามและเรียนรู้ regex อีกครั้ง - ดังนั้นในปีนี้เพื่อช่วยฉันจากน้ำตาฉันจะให้มันไปกองมากเกิน (เรียบเรียงคริสต์มาสล่าสุด) ฉันต้องการที่จะผ่านในสตริงในรูปแบบนี้และถูกส่งกลับสตริง{getThis} getThisมีใครช่วยช่วยยึดปณิธานปีใหม่ของฉันได้ไหม คำถามที่เกี่ยวข้องใน Stack Overflow: เราจะเปลี่ยนคำพูดปกติ (เช่น ', ") เป็นคำพูด LaTeX / TeX ได้อย่างไร (เช่น` `',` `'') Regex: เพื่อดึงสตริงย่อยระหว่างสองแท็กในสตริง Regex เพื่อแทนที่ \ n ทั้งหมดใน String แต่ไม่มีสิ่งที่อยู่ในแท็ก [code] [/ code]
116 javascript  regex 

5
regex เพื่อจับคู่สตริงย่อยที่ไม่ได้ตามด้วยสตริงย่อยอื่น ๆ
ฉันต้องการนิพจน์ทั่วไปที่ตรงกันblahfooblahแต่ไม่ใช่blahfoobarblah ฉันต้องการให้มันจับคู่เฉพาะ foo และทุกอย่างรอบ ๆ foo ตราบเท่าที่ไม่ได้ตามด้วย bar ฉันพยายามใช้นี้foo.*(?<!bar)ซึ่งเป็นค่อนข้างใกล้เคียง blahfoobarblahแต่มันตรงกับ การมองในแง่ลบที่อยู่เบื้องหลังจะต้องจับคู่กับอะไรก็ได้ไม่ใช่แค่บาร์ ภาษาเฉพาะที่ฉันใช้คือ Clojure ซึ่งใช้ Java regexes ภายใต้ประทุน แก้ไข: โดยเฉพาะอย่างยิ่งผมยังต้องการที่จะผ่านแต่ไม่blahfooblahfoobarblahblahfoobarblahblah
116 java  regex  clojure 

4
Visual Studio Code Search และแทนที่ด้วย Regular Expressions
ฉันต้องการที่จะใช้ "ค้นหาและแทนที่" ใน Visual Studio รหัสที่จะเปลี่ยนทุกกรณีของ <h1>content</h1>การ#### contentภายในเอกสารโดยใช้นิพจน์ปกติ ฉันจะทำมันให้สำเร็จได้อย่างไร?


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