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

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

5
ฉันจะนับจำนวนการจับคู่สำหรับ regex ได้อย่างไร
สมมติว่าฉันมีสตริงที่ประกอบด้วยสิ่งนี้: HelloxxxHelloxxxHello ฉันรวบรวมรูปแบบเพื่อค้นหา 'สวัสดี' Pattern pattern = Pattern.compile("Hello"); Matcher matcher = pattern.matcher("HelloxxxHelloxxxHello"); มันควรจะพบสามการแข่งขัน ฉันจะนับจำนวนการแข่งขันได้อย่างไร? ฉันได้ลองใช้ลูปต่างๆแล้วmatcher.groupCount()แต่มันไม่ได้ผล
101 java  regex 

4
การเลือกแถวของกรอบข้อมูลตามการจับคู่สตริงบางส่วนในคอลัมน์
ฉันต้องการเลือกแถวจากกรอบข้อมูลตามการจับคู่สตริงบางส่วนในคอลัมน์เช่นคอลัมน์ 'x' มีสตริง "hsa" การใช้sqldf- ถ้ามันมีlikeไวยากรณ์ - ฉันจะทำสิ่งที่ชอบ: select * from <> where x like 'hsa'. น่าเสียดายที่sqldfไม่รองรับไวยากรณ์นั้น หรือในทำนองเดียวกัน: selectedRows <- df[ , df$x %like% "hsa-"] ซึ่งแน่นอนไม่ได้ผล ใครช่วยฉันด้วยได้ไหม
101 r  regex  string  match  subset 

23
PHP Regex ที่จะตรวจสอบวันที่อยู่ในรูปแบบ YYYY-MM-DD
ฉันกำลังพยายามตรวจสอบว่าวันที่ที่ป้อนโดยผู้ใช้ปลายทางอยู่ใน YYYY-MM-DD Regex ไม่เคยเป็นจุดแข็งของฉันฉันได้รับค่าส่งคืนที่ผิดพลาดสำหรับ preg_match () ที่ฉันตั้งค่าไว้ ดังนั้นฉันคิดว่าฉันทำ regex ยุ่งเหยิงตามรายละเอียดด้านล่าง $date="2012-09-12"; if (preg_match("^[0-9]{4}-[0-1][0-9]-[0-3][0-9]$",$date)) { return true; }else{ return false; } ความคิดใด ๆ ?
101 php  regex  date-format 

12
คุณตรวจสอบ URL ด้วยนิพจน์ทั่วไปใน Python ได้อย่างไร
ฉันกำลังสร้างแอปบน Google App Engine ฉันยังใหม่กับ Python อย่างไม่น่าเชื่อและได้ต่อสู้กับปัญหาต่อไปนี้ในช่วง 3 วันที่ผ่านมา ฉันมีคลาสที่ใช้แทน RSS Feed และในคลาสนี้ฉันมีเมธอดที่เรียกว่า setUrl การป้อนข้อมูลวิธีนี้คือ URL ฉันกำลังพยายามใช้โมดูล re python เพื่อตรวจสอบความถูกต้องจาก RFC 3986 Reg-ex ( http://www.ietf.org/rfc/rfc3986.txt ) ด้านล่างนี้คือ snipped ซึ่งควรใช้งานได้หรือไม่? p = re.compile('^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?') m = p.match(url) if m: self.url = url return url

13
แยกสตริงโดยมีจุดเป็นตัวคั่น
ฉันสงสัยว่าฉันกำลังจะแยกสตริงอย่าง.ถูกวิธีหรือไม่? รหัสของฉันคือ: String[] fn = filename.split("."); return fn[0]; ฉันต้องการเพียงส่วนแรกของสตริงนั่นคือเหตุผลที่ฉันส่งคืนรายการแรก ฉันถามเพราะฉันสังเกตเห็นใน API ว่า.หมายถึงอักขระใด ๆ ดังนั้นตอนนี้ฉันติดอยู่
100 java  regex  string  split 

7
RegEx เพื่อแยกวิเคราะห์หรือตรวจสอบข้อมูล Base64
เป็นไปได้หรือไม่ที่จะใช้ RegEx เพื่อตรวจสอบความถูกต้องหรือล้างข้อมูล Base64 นั่นเป็นคำถามง่ายๆ แต่ปัจจัยที่ผลักดันคำถามนี้คือสิ่งที่ทำให้ยาก ฉันมีตัวถอดรหัส Base64 ที่ไม่สามารถพึ่งพาข้อมูลอินพุตเพื่อให้เป็นไปตามข้อกำหนด RFC ได้อย่างสมบูรณ์ ดังนั้นปัญหาที่ฉันพบคือปัญหาเช่นบางทีข้อมูล Base64 ที่อาจไม่ถูกแบ่งออกเป็น 78 (ฉันคิดว่ามันเป็น 78 ฉันต้องตรวจสอบ RFC อีกครั้งดังนั้นอย่าให้ฉันรู้ว่าตัวเลขที่แน่นอนไม่ถูกต้อง) เส้นหรือเส้นอาจไม่ลงท้ายด้วย CRLF ซึ่งอาจมีเพียง CR หรือ LF หรืออาจไม่มีก็ได้ ดังนั้นฉันจึงมีช่วงเวลาหนึ่งที่แยกวิเคราะห์ข้อมูล Base64 ที่จัดรูปแบบเช่นนี้ ด้วยเหตุนี้ตัวอย่างต่อไปนี้จึงไม่สามารถถอดรหัสได้อย่างน่าเชื่อถือ ฉันจะแสดงเฉพาะส่วนหัว MIME บางส่วนเพื่อความกะทัดรัด Content-Transfer-Encoding: base64 VGhpcyBpcyBzaW1wbGUgQVNDSUkgQmFzZTY0IGZvciBTdGFja092ZXJmbG93IGV4YW1wbGUu โอเคการแยกวิเคราะห์จึงไม่มีปัญหาและเป็นผลลัพธ์ที่เราคาดหวัง และใน 99% ของกรณีการใช้รหัสใด ๆ อย่างน้อยเพื่อตรวจสอบว่าแต่ละถ่านในบัฟเฟอร์เป็นถ่าน base64 ที่ถูกต้องทำงานได้อย่างสมบูรณ์ แต่ตัวอย่างถัดไปจะโยนประแจลงในส่วนผสม Content-Transfer-Encoding: base64 http://www.stackoverflow.com VGhpcyBpcyBzaW1wbGUgQVNDSUkgQmFzZTY0IGZvciBTdGFja092ZXJmbG93IGV4YW1wbGUu …

12
วิธีที่เร็วที่สุดในการหลีกเลี่ยงแท็ก HTML เป็นเอนทิตี HTML?
ผมเขียนส่วนขยายของ Chrome ที่เกี่ยวข้องกับการทำมากของงานดังต่อไปนี้: ฆ่าเชื้อสตริงที่อาจมีแท็ก HTML โดยการแปลง<, >และ&เพื่อ<, >และ&ตามลำดับ (กล่าวอีกนัยหนึ่งก็เหมือนกับของ PHP htmlspecialchars(str, ENT_NOQUOTES)- ฉันไม่คิดว่าจะต้องมีการแปลงอักขระแบบ double-quote) นี่เป็นฟังก์ชั่นที่เร็วที่สุดที่ฉันเคยพบ: function safe_tags(str) { return str.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>') ; } แต่ยังคงมีความล่าช้าอย่างมากเมื่อฉันต้องวิ่งสองสามพันสายผ่านมันในครั้งเดียว ใครสามารถปรับปรุงเรื่องนี้ได้บ้าง? ส่วนใหญ่เป็นสตริงระหว่าง 10 ถึง 150 อักขระหากสิ่งนั้นสร้างความแตกต่าง (ความคิดหนึ่งที่ฉันมีคือไม่ต้องกังวลกับการเข้ารหัสเครื่องหมายที่ใหญ่กว่า - จะมีอันตรายจริงหรือไม่)

7
วิธีที่เร็วที่สุดในการตรวจสอบว่าสตริงตรงกับ regexp ในทับทิมหรือไม่?
วิธีใดที่เร็วที่สุดในการตรวจสอบว่าสตริงตรงกับนิพจน์ทั่วไปใน Ruby หรือไม่ ปัญหาของฉันคือฉันต้อง "egrep" ผ่านรายการสตริงจำนวนมากเพื่อค้นหาว่าสตริงใดที่ตรงกับ regexp ที่กำหนดให้ในรันไทม์ ฉันสนใจแค่ว่าสตริงตรงกับ regexp ไม่ใช่ที่ที่ตรงกันหรือเนื้อหาของกลุ่มที่ตรงกันคืออะไร ฉันหวังว่าสมมติฐานนี้จะสามารถใช้เพื่อลดระยะเวลาที่รหัสของฉันใช้ในการจับคู่ regexps ฉันโหลด regexp ด้วย pattern = Regexp.new(ptx).freeze ฉันพบว่าstring =~ patternเร็วกว่าstring.match(pattern). มีเทคนิคหรือทางลัดอื่น ๆ ที่สามารถใช้เพื่อทำให้การทดสอบนี้เร็วขึ้นหรือไม่?
100 ruby  regex  performance 

10
นิพจน์ทั่วไปเพื่อจับคู่ตัวเลขโดยมีหรือไม่มีเครื่องหมายจุลภาคและทศนิยมในข้อความ
ฉันกำลังพยายามค้นหาและแทนที่ตัวเลขทั้งหมดในเนื้อหาของข้อความ ฉันได้พบ regex ตัวอย่างบางส่วนซึ่งเกือบจะแก้ปัญหาได้ แต่ก็ยังไม่มีอะไรที่สมบูรณ์แบบ ปัญหาที่ฉันมีคือตัวเลขในข้อความของฉันอาจมีหรือไม่มีทศนิยมและลูกน้ำก็ได้ ตัวอย่างเช่น: "สุนัขจิ้งจอกน้ำหนัก 5,000 ปอนด์กระโดดข้ามรั้ว 99,999.99998713 ฟุต" regex ควรส่งคืน " 5000" และ " 99,999.99998713" ตัวอย่างที่ฉันพบการแบ่งตัวเลขในเครื่องหมายจุลภาคหรือ จำกัด ไว้ที่ทศนิยมสองตำแหน่ง ฉันเริ่มเข้าใจ regex มากพอที่จะเห็นว่าเหตุใดบางตัวอย่างจึง จำกัด ทศนิยมสองตำแหน่ง แต่ฉันยังไม่ได้เรียนรู้วิธีเอาชนะมันและยังรวมเครื่องหมายจุลภาคเพื่อรับลำดับทั้งหมด นี่คือเวอร์ชันล่าสุดของฉัน: [0-9]+(\.[0-9][0-9]?)? ซึ่งจะส่งคืน " 5000", " 99,99", " 9.99" และ " 998713" สำหรับข้อความด้านบน
100 regex 

5
ฉันจะดึงอักขระที่ไม่ใช่ตัวเลขและตัวอักษรออกจากสตริงและเว้นช่องว่างได้อย่างไร
ฉันต้องการสร้างนิพจน์ทั่วไปที่ลบอักขระที่ไม่ใช่ตัวอักษรและตัวเลขทั้งหมด แต่เว้นช่องว่างไว้ นี่คือการล้างข้อมูลการค้นหาก่อนที่จะเข้าสู่ฐานข้อมูล นี่คือสิ่งที่ฉันมีจนถึงตอนนี้: @search_query = @search_query.gsub(/[^0-9a-z]/i, '') ปัญหาที่นี่คือการลบช่องว่างทั้งหมด แนวทางแก้ไขในการรักษาช่องว่าง?

3
เราจะจับคู่ ^ nb ^ n กับ Java regex ได้อย่างไร
นี่เป็นส่วนที่สองของชุดบทความเกี่ยวกับ regex เพื่อการศึกษา มันแสดงให้เห็นว่า lookaheads และการอ้างอิงที่ซ้อนกันสามารถนำมาใช้เพื่อให้ตรงกับ languge ไม่ใช่ปกติnขn การอ้างอิงแบบซ้อนเป็นครั้งแรกใน: regex นี้ค้นหาตัวเลขสามเหลี่ยมได้อย่างไร หนึ่งในภาษาที่ไม่ใช่ภาษาทั่วไปตามแบบฉบับคือ: L = { an bn: n > 0 } นี่คือภาษาของทุกสายไม่ว่างเปล่าซึ่งประกอบด้วยจำนวนของบางa's ตามด้วยจำนวนที่เท่ากันb' s ตัวอย่างของสตริงในภาษานี้มีab, ,aabbaaabbb ภาษานี้สามารถแสดงให้เป็นที่ไม่ปกติโดยแทรกสูบน้ำ มันมีอยู่ในความเป็นจริงตามแบบฉบับภาษาบริบทฟรีซึ่งสามารถสร้างขึ้นโดยไวยากรณ์บริบทฟรี S → aSb | ab อย่างไรก็ตามการติดตั้ง regex ในยุคปัจจุบันสามารถจดจำได้มากกว่าภาษาทั่วไปอย่างชัดเจน นั่นคือพวกเขาไม่ "ปกติ" ตามนิยามทฤษฎีภาษาที่เป็นทางการ PCRE และ Perl รองรับ regex แบบเรียกซ้ำและ. NET รองรับการกำหนดกลุ่มที่สมดุล คุณลักษณะที่ "แฟนซี" น้อยกว่าเช่นการจับคู่การอ้างอิงกลับหมายความว่านิพจน์ทั่วไปไม่ปกติ …

5
นิพจน์ทั่วไป: ค้นหาช่องว่าง (แท็บ / ช่องว่าง) แต่ไม่ใช่ขึ้นบรรทัดใหม่
ฉันจะมีนิพจน์ทั่วไปที่ทดสอบช่องว่างหรือแท็บ แต่ไม่ขึ้นบรรทัดใหม่ได้อย่างไร ฉันลองแล้ว\sแต่พบว่ามันทดสอบการขึ้นบรรทัดใหม่ด้วย ฉันใช้ C # / WPF แต่มันไม่สำคัญ
99 regex 

6
หนึ่งจะหลีกเลี่ยงแบ็กสแลชและสแลชไปข้างหน้าใน VIM ค้นหา / ค้นหาได้อย่างไร
ตัวอย่างเช่นหากฉันต้องการค้นหาและแทนที่ด้วยสตริงที่มีเครื่องหมายทับย้อนกลับหรือไปข้างหน้าสิ่งนี้จะสำเร็จเป็นกลุ่มได้อย่างไร ขอขอบคุณ! ตัวอย่างค้นหาและแทนที่คือ: :%s/foo/bar/g จะเป็นอย่างไรถ้าฉันต้องการค้นหาเหตุการณ์ทั้งหมด<dog/>และแทนที่ด้วย<cat\>
99 regex  vim 



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