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

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

10
ใช้เครื่องหมายดาวใน grep
ฉันพยายามค้นหาสตริงย่อย "abc" ในไฟล์เฉพาะใน linux / bash ดังนั้นฉันจึง: grep '*abc*' myFile มันกลับไม่มีอะไร แต่ถ้าฉันทำ: grep 'abc' myFile ส่งคืนการจับคู่อย่างถูกต้อง ตอนนี้นี่ไม่ใช่ปัญหาสำหรับฉัน แต่ถ้าฉันต้องการ grep สำหรับสตริงที่ซับซ้อนกว่านี้ให้พูดว่า *abc * def * ฉันจะทำมันให้สำเร็จโดยใช้ grep ได้อย่างไร
90 regex  bash  grep 

2
จะเขียนคำสั่ง Ruby switch (case … when) ด้วย regex และ backreferences ได้อย่างไร?
ฉันรู้ว่าฉันสามารถเขียนคำสั่งกรณี Ruby เพื่อตรวจสอบการจับคู่กับนิพจน์ทั่วไป อย่างไรก็ตามฉันต้องการใช้ข้อมูลที่ตรงกันในคำสั่งส่งคืนของฉัน บางอย่างเช่นรหัสกึ่งเทียมนี้: foo = "10/10/2011" case foo when /^([0-9][0-9])/ print "the month is #{match[1]}" else print "something else" end ฉันจะบรรลุสิ่งนั้นได้อย่างไร? ขอบคุณ! หมายเหตุ: ฉันเข้าใจว่าฉันจะไม่ใช้คำสั่ง switch สำหรับกรณีธรรมดา ๆ ข้างต้น แต่นั่นเป็นเพียงตัวอย่างเดียว ในความเป็นจริงสิ่งที่ฉันพยายามจะบรรลุคือการจับคู่นิพจน์ทั่วไปที่เป็นไปได้สำหรับวันที่ซึ่งสามารถเขียนได้หลายวิธีจากนั้นแยกวิเคราะห์ด้วยคลาส Date ของ Ruby ตามลำดับ

4
มีความแตกต่างระหว่าง / \ s / g และ / \ s + / g หรือไม่?
เมื่อเรามีสตริงที่มีอักขระเว้นวรรค: var str = ' A B C D EF '; และเราต้องการลบช่องว่างออกจากสตริง (เราต้องการสิ่งนี้'ABCDEF':) ทั้งสองสิ่งนี้: str.replace(/\s/g, '') และนี่: str.replace(/\s+/g, '') จะส่งคืนผลลัพธ์ที่ถูกต้อง นี่หมายความว่าสิ่งที่+ไม่จำเป็นในสถานการณ์นี้หรือไม่? มีความแตกต่างระหว่างนิพจน์ทั่วไปทั้งสองในสถานการณ์นี้หรือไม่ (เช่นเดียวกับนิพจน์ทั่วไปจะให้ผลลัพธ์ที่แตกต่างกันในลักษณะใด) อัปเดต:การเปรียบเทียบประสิทธิภาพ - /\s+/gเร็วกว่า ดูที่นี่: http://jsperf.com/s-vs-s
89 javascript  regex 

5
Python regex - r คำนำหน้า
ใครช่วยอธิบายrได้ไหมว่าทำไมตัวอย่างที่ 1 ด้านล่างใช้งานได้เมื่อไม่ได้ใช้คำนำหน้า ฉันคิดว่าrต้องใช้คำนำหน้าทุกครั้งที่ใช้ลำดับการหลีกเลี่ยง ตัวอย่างที่ 2 และตัวอย่างที่ 3 แสดงให้เห็นถึงสิ่งนี้ # example 1 import re print (re.sub('\s+', ' ', 'hello there there')) # prints 'hello there there' - not expected as r prefix is not used # example 2 import re print (re.sub(r'(\b\w+)(\s+\1\b)+', r'\1', 'hello there there')) # prints 'hello there' …

4
การจับคู่ Regex ในคำสั่ง Bash if
ฉันทำอะไรผิดที่นี่? พยายามจับคู่สตริงที่มีช่องว่างตัวพิมพ์เล็กตัวพิมพ์ใหญ่หรือตัวเลข อักขระพิเศษก็น่าจะดีเช่นกัน แต่ฉันคิดว่าต้องมีการหลีกเลี่ยงอักขระบางตัว TEST="THIS is a TEST title with some numbers 12345 and special char *&^%$#" if [[ "$TEST" =~ [^a-zA-Z0-9\ ] ]]; then BLAH; fi เห็นได้ชัดว่านี่เป็นการทดสอบเฉพาะบนล่างตัวเลขและช่องว่าง ใช้งานไม่ได้ * อัพเดท * ฉันเดาว่าฉันควรจะเจาะจงมากกว่านี้ นี่คือบรรทัดจริงของรหัส if [[ "$TITLE" =~ [^a-zA-Z0-9\ ] ]]; then RETURN="FAIL" && ERROR="ERROR: Title can only contain upper …


5
ใช้นิพจน์ทั่วไปใน if-condition ใน bash
ฉันสงสัยว่ากฎทั่วไปที่จะใช้นิพจน์ทั่วไปใน if clause in bash? นี่คือตัวอย่าง $ gg=svm-grid-ch $ if [[ $gg == *grid* ]] ; then echo $gg; fi svm-grid-ch $ if [[ $gg == ^....grid* ]] ; then echo $gg; fi $ if [[ $gg == ....grid* ]] ; then echo $gg; fi $ if [[ $gg == …
88 regex  bash 


7
ตัวคั่นต้องไม่เป็นตัวอักษรและตัวเลขคละกันหรือแบ็กสแลชและ preg_match
ฉันมีรหัสนี้: $string1 = "My name is 'Kate' and im fine"; $pattern = "My name is '(.*)' and im fine"; preg_match($pattern , $string1, $matches); echo $matches[1]; และเมื่อฉันเรียกใช้มันจะส่งกลับข้อผิดพลาดนี้: คำเตือน: preg_match () [function.preg-match]: ตัวคั่นต้องไม่ใช่ตัวอักษรและตัวเลขหรือเครื่องหมายแบ็กสแลช
88 php  regex  preg-match 

2
การจัดการการอ้างอิงย้อนกลับไปยังการจับกลุ่มในรูปแบบการแทนที่ re.sub
ฉันต้องการรับสตริง0.71331, 52.25378และส่งคืน0.71331,52.25378- นั่นคือเพียงแค่มองหาตัวเลขลูกน้ำช่องว่างและตัวเลขแล้วตัดช่องว่างออก นี่คือรหัสปัจจุบันของฉัน: coords = '0.71331, 52.25378' coord_re = re.sub("(\d), (\d)", "\1,\2", coords) print coord_re 0.7133,2.25378แต่ตอนนี้ให้ฉัน ผมทำอะไรผิดหรือเปล่า?
88 python  regex 

4
ใช้ RegEX เพื่อนำหน้าและต่อท้ายใน Notepad ++
ฉันมีรายการคำจำนวนมากในไฟล์ txt และฉันกำลังพยายามค้นหา regex และแทนที่ใน Notepad ++ ฉันต้องเพิ่มสตริงก่อนแต่ละบรรทัดและหลังแต่ละบรรทัด .. ดังนั้น: wordone wordtwo คำสาม กลายเป็น สามารถ: "wordone" สามารถ: "wordtwo" สามารถ: "wordthree" ฉันจะทำเช่นนี้ได้อย่างไร?
88 regex  notepad++ 


11
ฉันจะตรวจสอบได้อย่างไรว่าสตริงมีเฉพาะตัวอักษรตัวเลขขีดล่างและขีดกลางเท่านั้น
ฉันรู้วิธีการทำเช่นนี้หากฉันวนซ้ำตัวอักษรทั้งหมดในสตริง แต่ฉันกำลังมองหาวิธีที่หรูหรากว่านี้
87 python  regex  string 

8
นิพจน์ทั่วไปเพื่อจับคู่ URL ใน Java
ฉันใช้ RegexBuddy ในขณะที่ทำงานกับนิพจน์ทั่วไป จากไลบรารีฉันคัดลอกนิพจน์ทั่วไปเพื่อจับคู่ URL ฉันทดสอบสำเร็จภายใน RegexBuddy อย่างไรก็ตามเมื่อฉันคัดลอกเป็นStringรสJava และวางลงในโค้ด Java ก็ไม่ได้ผล ชั้นเรียนต่อไปนี้จะพิมพ์false: public class RegexFoo { public static void main(String[] args) { String regex = "\\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]"; String text = "http://google.com"; System.out.println(IsMatch(text,regex)); } private static boolean IsMatch(String s, String pattern) { try { Pattern patt = Pattern.compile(pattern); Matcher matcher = patt.matcher(s); …
87 java  regex  regexbuddy 


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