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

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

30
เพิ่มช่องว่างก่อนตัวพิมพ์ใหญ่
กำหนดสตริง "ThisStringHasNoSpacesButItDoesHaveCapitals" เป็นวิธีที่ดีที่สุดในการเพิ่มช่องว่างก่อนตัวพิมพ์ใหญ่อะไร ดังนั้นสตริงสุดท้ายจะเป็น "สตริงนี้ไม่มีช่องว่าง แต่จะมีตัวพิมพ์ใหญ่" นี่คือความพยายามของฉันกับ RegEx System.Text.RegularExpressions.Regex.Replace(value, "[A-Z]", " $0")
194 c#  regex  string 

7
สลับคำสั่งสำหรับการจับคู่สตริงใน JavaScript
ฉันจะเขียน swtich สำหรับเงื่อนไขต่อไปนี้ได้อย่างไร หาก URL มี "foo" ดังนั้น settings.base_url คือ "bar" ต่อไปนี้คือการบรรลุเอฟเฟ็กต์ที่ต้องการ แต่ฉันรู้สึกว่ามันสามารถจัดการได้ง่ายขึ้นในสวิตช์: var doc_location = document.location.href; var url_strip = new RegExp("http:\/\/.*\/"); var base_url = url_strip.exec(doc_location) var base_url_string = base_url[0]; //BASE URL CASES // LOCAL if (base_url_string.indexOf('xxx.local') > -1) { settings = { "base_url" : "http://xxx.local/" }; } // DEV …

7
แทนที่บางกลุ่มด้วย Regex
สมมติว่าฉันมี regex ต่อไปนี้: -(\d+)- และฉันต้องการแทนที่โดยใช้ C # กลุ่ม 1 (\d+)ด้วยAAเพื่อรับ: -AA- ตอนนี้ฉันกำลังแทนที่ด้วย: var text = "example-123-example"; var pattern = @"-(\d+)-"; var replaced = Regex.Replace(text, pattern, "-AA-"); แต่ฉันไม่ชอบสิ่งนี้เพราะถ้าฉันเปลี่ยนรูปแบบให้ตรงกัน_(\d+)_แทนฉันจะต้องเปลี่ยนสายอักขระการแทนที่ด้วย_AA_ด้วยและสิ่งนี้ขัดกับหลักการของ DRY ฉันกำลังมองหาสิ่งที่ชอบ: เก็บข้อความที่ตรงกันทุกประการว่าเป็นอย่างไร แต่เปลี่ยนกลุ่ม 1 โดยthis textและกลุ่ม 2 ตามanother text... แก้ไข: นั่นเป็นเพียงตัวอย่าง ฉันแค่กำลังมองหาวิธีทั่วไปในการทำสิ่งที่ฉันพูดไว้ข้างต้น มันควรจะทำงานเพื่อ: anything(\d+)more_text และรูปแบบใด ๆ ที่คุณสามารถจินตนาการได้ สิ่งที่ฉันต้องการทำคือแทนที่เฉพาะกลุ่มและรักษาส่วนที่เหลือของการแข่งขัน
191 c#  regex  replace 

13
นิพจน์ปกติเพื่ออนุญาตให้มีช่องว่างระหว่างคำ
ฉันต้องการนิพจน์ทั่วไปที่ป้องกันสัญลักษณ์และอนุญาตเฉพาะตัวอักษรและตัวเลข regex ด้านล่างใช้งานได้ดี แต่ไม่อนุญาตให้มีช่องว่างระหว่างคำ ^[a-zA-Z0-9_]*$ ตัวอย่างเช่นเมื่อใช้นิพจน์ทั่วไป "HelloWorld" นั้นใช้ได้ แต่ "Hello World" ไม่ตรงกัน ฉันจะปรับแต่งเพื่อให้มีช่องว่างได้อย่างไร

9
Regex สำหรับสตริงที่ไม่ลงท้ายด้วยคำต่อท้ายที่กำหนด
ฉันไม่สามารถค้นหา regex ที่เหมาะสมเพื่อจับคู่สตริงใด ๆ ที่ไม่ลงท้ายด้วยเงื่อนไขบางอย่าง aตัวอย่างเช่นผมไม่ต้องการที่จะตรงกับสิ่งที่สิ้นสุดกับ นัดนี้ b ab 1 สิ่งนี้ไม่ตรงกัน a ba ฉันรู้ว่า regex ควรลงท้ายด้วย$เพื่อทำเครื่องหมายจุดสิ้นสุดแม้ว่าฉันไม่ทราบว่าควรนำหน้าอะไร แก้ไข : คำถามเดิมดูเหมือนจะไม่เป็นตัวอย่างที่ถูกต้องสำหรับกรณีของฉัน ดังนั้นวิธีจัดการกับตัวละครมากกว่าหนึ่งตัว? พูดอะไรไม่จบด้วยabเหรอ? ฉันสามารถแก้ไขได้โดยใช้หัวข้อนี้ : .*(?:(?!ab).).$ แม้ว่าข้อเสียของสิ่งนี้คือมันไม่ตรงกับสายอักขระหนึ่งตัว
190 regex 

5
นิพจน์ทั่วไปเพื่อ จำกัด จำนวนอักขระไม่เกิน 10 ตัว
ฉันพยายามเขียนนิพจน์ทั่วไปที่จะอนุญาตให้ใช้ตัวอักษรพิมพ์เล็กและไม่เกิน 10 อักขระเท่านั้น สิ่งที่ฉันมีจนถึงตอนนี้ดูเหมือนว่า: pattern: /^[a-z]{0,10}+$/ สิ่งนี้ไม่ทำงานหรือคอมไพล์ ฉันมีตัวทำงานที่เพิ่งอนุญาตตัวอักษรตัวเล็กซึ่งนี่คือ: pattern: /^[a-z]+$/ แต่ฉันต้อง จำกัด จำนวนตัวอักษรไว้ที่ 10
189 regex 

30
RegEx สำหรับการจับคู่รหัสไปรษณีย์ของสหราชอาณาจักร
ฉันหลังจาก regex ที่จะตรวจสอบรหัสไปรษณีย์ของสหราชอาณาจักรที่ซับซ้อนอย่างเต็มรูปแบบเฉพาะภายในสตริงอินพุต แบบฟอร์มรหัสไปรษณีย์ที่ผิดปกติทั้งหมดจะต้องครอบคลุมเช่นเดียวกับแบบปกติ ตัวอย่างเช่น ไม้ขีด CW3 9SS SE5 0EG SE50EG se5 0eg WC2H 7LT ไม่มีการแข่งขัน aWC2H 7LT WC2H 7LTa WC2H ฉันจะแก้ปัญหานี้ได้อย่างไร

7
ข้อผิดพลาด RE: ลำดับไบต์ที่ผิดกฎหมายบน Mac OS X
ฉันกำลังพยายามแทนที่สตริงใน Makefile บน Mac OS X สำหรับการคอมไพล์ข้ามเป็น iOS สตริงมีเครื่องหมายคำพูดคู่ฝังอยู่ คำสั่งคือ: sed -i "" 's|"iphoneos-cross","llvm-gcc:-O3|"iphoneos-cross","clang:-Os|g' Configure และข้อผิดพลาดคือ: sed: RE error: illegal byte sequence ฉันได้ลองใช้เครื่องหมายคำพูดคู่เครื่องหมายจุลภาคขีดคั่นและเครื่องหมายทวิภาคโดยไม่มีความสุข ตัวอย่างเช่น: sed -i "" 's|\"iphoneos-cross\"\,\"llvm-gcc\:\-O3|\"iphoneos-cross\"\,\"clang\:\-Os|g' Configure ฉันมีเวลาสักครู่ในการดีบักปัญหา ไม่มีใครรู้วิธีการsedพิมพ์ตำแหน่งของลำดับไบต์ที่ผิดกฎหมายหรือไม่ หรือใครรู้ว่าลำดับไบต์ที่ผิดกฎหมายคืออะไร?
184 regex  macos  bash  sed 

1
python re.sub group: number หลัง \ number
ฉันจะแทนที่foobarด้วยได้foo123barอย่างไร สิ่งนี้ใช้ไม่ได้: >>> re.sub(r'(foo)', r'\1123', 'foobar') 'J3bar' งานนี้: >>> re.sub(r'(foo)', r'\1hi', 'foobar') 'foohibar' \numberฉันคิดว่ามันเป็นปัญหาที่พบบ่อยเมื่อมีบางสิ่งบางอย่างเช่น ทุกคนสามารถให้คำแนะนำเกี่ยวกับวิธีการจัดการกับฉันได้หรือไม่

8
รูปแบบนิพจน์ทั่วไปไม่ตรงกับที่ใดในสตริง
ฉันพยายามจับคู่<input>เขตข้อมูลประเภท "ซ่อน" โดยใช้รูปแบบนี้: /<input type="hidden" name="([^"]*?)" value="([^"]*?)" />/ นี่คือตัวอย่างแบบฟอร์มข้อมูล: <input type="hidden" name="SaveRequired" value="False" /><input type="hidden" name="__VIEWSTATE1" value="1H4sIAAtzrkX7QfL5VEGj6nGi+nP" /><input type="hidden" name="__VIEWSTATE2" value="0351118MK" /><input type="hidden" name="__VIEWSTATE3" value="ZVVV91yjY" /><input type="hidden" name="__VIEWSTATE0" value="3" /><input type="hidden" name="__VIEWSTATE" value="" /><input type="hidden" name="__VIEWSTATE" value="" /> แต่ผมไม่แน่ใจว่าtype, nameและvalueคุณลักษณะที่มักจะปรากฏในลำดับเดียวกัน หากtypeแอตทริบิวต์มาล่าสุดการจับคู่จะล้มเหลวเพราะในรูปแบบของฉันมันเป็นจุดเริ่มต้น คำถาม: ฉันจะเปลี่ยนรูปแบบของฉันได้อย่างไรจึงจะจับคู่โดยไม่คำนึงถึงตำแหน่งของแอตทริบิวต์ใน<input>แท็ก PS:โดยวิธีการที่ผมใช้Adobe AirตามRegEx เครื่องมือสก์ท็อปสำหรับการทดสอบการแสดงผลปกติ
181 html  regex  parsing 

3
grep regex ไม่ได้มีสตริง
ฉันกำลังส่งรายการรูปแบบ regex ไปgrepยังเพื่อตรวจสอบกับไฟล์ syslog พวกเขามักจะตรงกับที่อยู่ IP และบันทึกรายการ; grep "1\.2\.3\.4.*Has exploded" syslog.log มันเป็นรายการของรูปแบบที่เหมือนกับ"1\.2\.3\.4.*Has exploded"ตอนที่ฉันผ่านเป็นวงดังนั้นฉันไม่สามารถผ่าน "-v" ได้ ฉันสับสนที่พยายามทำผกผันของด้านบนบรรทัดที่ไม่ตรงกับที่อยู่ IP และข้อผิดพลาดบางอย่างดังนั้น "! 1.2.3.4. * มีการระเบิด" จะจับคู่สาย syslog สำหรับสิ่งอื่นที่ไม่ใช่ 1.2.3.4 บอกฉันว่ามันระเบิด . ฉันจะต้องรวม IP เพื่อไม่ให้ตรงกัน ฉันได้เห็นโพสต์ที่คล้ายกันมากมายใน StackOverflor แต่พวกเขาใช้รูปแบบ regex ที่ฉันไม่สามารถใช้งานgrepได้ ทุกคนสามารถให้ตัวอย่างที่ใช้งานได้เพื่อgrepโปรด UPDATE: สิ่งนี้เกิดขึ้นในสคริปต์เช่นนี้ patterns[1]="1\.2\.3\.4.*Has exploded" patterns[2]="5\.6\.7\.8.*Has died" patterns[3]="\!9\.10\.11\.12.*Has exploded" for i in {1..3} do …
181 regex  grep 

7
ฉันจะทำการแทนที่ Perl บนสตริงในขณะที่เก็บต้นฉบับได้อย่างไร
ใน Perl เป็นวิธีที่ดีในการดำเนินการแทนบนสตริงโดยใช้การแสดงออกปกติและเก็บค่าไว้ในตัวแปรที่แตกต่างกันโดยไม่ต้องเปลี่ยนต้นฉบับได้อย่างไร ฉันมักจะเพียงแค่คัดลอกสตริงไปยังตัวแปรใหม่แล้วผูกไว้กับs///regex ที่จะแทนที่ในสตริงใหม่ แต่ฉันสงสัยว่ามีวิธีที่ดีกว่าการทำเช่นนี้? $newstring = $oldstring; $newstring =~ s/foo/bar/g;
180 regex  perl  replace 

8
Regex เพื่อจับคู่สตริงที่มีสองชื่อในลำดับใด ๆ
ฉันต้องการตรรกะและใน regex สิ่งที่ต้องการ แจ็คและเจมส์ เห็นด้วยกับสตริงดังต่อไปนี้ ' แจ็คสวัสดีนี่คือเจมส์ ' 'สวัสดีเจมส์นี่คือแจ็ค '
180 regex  string 

3
กลุ่มนิพจน์ทั่วไปที่มีชื่อว่า“ (? P <group_name> regexp)”:“ P” หมายถึงอะไร
ใน Python (?P&lt;group_name&gt;…) ไวยากรณ์อนุญาตให้หนึ่งอ้างถึงสตริงที่ตรงกันผ่านชื่อ: &gt;&gt;&gt; import re &gt;&gt;&gt; match = re.search('(?P&lt;name&gt;.*) (?P&lt;phone&gt;.*)', 'John 123456') &gt;&gt;&gt; match.group('name') 'John' "P" หมายถึงอะไร ฉันไม่สามารถหาคำแนะนำใด ๆ ในเอกสารที่เป็นทางการ ฉันชอบที่จะได้รับความคิดเกี่ยวกับวิธีการช่วยให้นักเรียนของฉันจำไวยากรณ์นี้ การรู้ว่า "P" นั้นหมายถึงอะไร (หรืออาจใช้แทน) จะมีประโยชน์


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