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


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

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ฉันคิดว่ามันเป็นปัญหาที่พบบ่อยเมื่อมีบางสิ่งบางอย่างเช่น ทุกคนสามารถให้คำแนะนำเกี่ยวกับวิธีการจัดการกับฉันได้หรือไม่

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" นั้นหมายถึงอะไร (หรืออาจใช้แทน) จะมีประโยชน์

17
RegEx เพื่อแยกการแข่งขันทั้งหมดจากสตริงโดยใช้ RegExp.exec
ฉันพยายามแยกสตริงประเภทต่อไปนี้: [key:"val" key2:"val2"] โดยที่มีคีย์ที่กำหนดเอง: "val" จับคู่อยู่ภายใน ฉันต้องการคว้าชื่อคีย์และค่า สำหรับผู้ที่อยากรู้อยากเห็นฉันพยายามที่จะแยกรูปแบบฐานข้อมูลของนักรบงาน นี่คือสตริงทดสอบของฉัน: [description:"aoeu" uuid:"123sth"] ซึ่งมีวัตถุประสงค์เพื่อเน้นว่าสิ่งใดก็ตามที่สามารถอยู่ในคีย์หรือค่านอกเหนือจากช่องว่างไม่มีช่องว่างรอบโคลอนและค่าอยู่ในเครื่องหมายคำพูดคู่เสมอ ในโหนดนี่คือผลลัพธ์ของฉัน: [deuteronomy][gatlin][~]$ node &gt; var re = /^\[(?:(.+?):"(.+?)"\s*)+\]$/g &gt; re.exec('[description:"aoeu" uuid:"123sth"]'); [ '[description:"aoeu" uuid:"123sth"]', 'uuid', '123sth', index: 0, input: '[description:"aoeu" uuid:"123sth"]' ] แต่description:"aoeu"ยังตรงกับรูปแบบนี้ ฉันจะกลับมาแข่งขันทั้งหมดได้อย่างไร?

4
Vim Regex แคปเจอร์กลุ่ม [bau -> byau: ceu -> cyeu]
ฉันมีรายการคำ: bau ceu diu fou gau ฉันต้องการเปลี่ยนรายการเป็น: byau cyeu dyiu fyou gyau ฉันลองคำสั่งไม่สำเร็จ: :%s/(\w)(\w\w)/\1y\2/g เนื่องจากสิ่งนี้ไม่ได้ผลฉันต้องเปลี่ยนอะไรเพื่อให้ regex capture group ทำงานใน Vim

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

2
Python Regex แทนที่กลุ่มทันที
มีวิธีใดในการแทนที่กลุ่มทั้งหมดโดยตรงโดยใช้ไวยากรณ์ regex วิธีปกติ: re.match(r"(?:aaa)(_bbb)", string1).group(1) แต่ฉันต้องการบรรลุสิ่งนี้: re.match(r"(\d.*?)\s(\d.*?)", "(CALL_GROUP_1) (CALL_GROUP_2)") ฉันต้องการสร้างสตริงใหม่ทันทีจากกลุ่มที่ Regex เพิ่งจับมา

7
ฉันสามารถแทนที่กลุ่มใน Java regex ได้หรือไม่
ฉันมีรหัสนี้และฉันต้องการทราบว่าฉันสามารถแทนที่เฉพาะกลุ่ม (ไม่ใช่รูปแบบทั้งหมด) ใน Java regex ได้หรือไม่ รหัส: //... Pattern p = Pattern.compile("(\\d).*(\\d)"); String input = "6 example input 4"; Matcher m = p.matcher(input); if (m.find()) { //Now I want replace group one ( (\\d) ) with number //and group two (too (\\d) ) with 1, but I don't know how. …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.