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

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

8
แยกสตริงย่อยตามรูปแบบ
สมมติว่าฉันมีรายการสตริง: string = c("G1:E001", "G2:E002", "G3:E003") ตอนนี้ผมหวังว่าจะได้เวกเตอร์ของสตริงที่มีเพียงชิ้นส่วนหลังจากลำไส้ใหญ่ ":" substring = c(E001,E002,E003)คือ มีวิธีที่สะดวกใน R ในการดำเนินการนี้หรือไม่? ใช้substr?
143 regex  r  substr 

11
Regex เพื่อตรวจสอบความแข็งแรงของรหัสผ่าน
เกณฑ์ความแข็งแรงของรหัสผ่านของฉันเป็นดังนี้: ความยาว 8 ตัวอักษร 2 ตัวอักษรในตัวพิมพ์ใหญ่ 1 ตัวละครพิเศษ (!@#$&*) 2 ตัวเลข (0-9) 3 ตัวอักษรในตัวพิมพ์เล็ก ใครช่วยกรุณาให้ regex ฉันเหมือนกัน เงื่อนไขทั้งหมดต้องเป็นไปตามรหัสผ่าน
142 regex  passwords 

5
ความแตกต่างระหว่าง \ w และ \ b ​​อักขระเมตานิพจน์ทั่วไป
ทุกคนสามารถอธิบายความแตกต่างระหว่าง\bและ\wตัวบ่งชี้การแสดงออกปกติได้หรือไม่ มันเป็นความเข้าใจของฉันว่าทั้งสอง metacharacters ใช้สำหรับขอบเขตของคำ นอกจากนี้อักขระเมตาใดที่มีประสิทธิภาพสำหรับเนื้อหาหลายภาษา
142 javascript  java  php  regex  perl 

3
อะไรคือความแตกต่างระหว่าง .*? และ. * นิพจน์ทั่วไป
ฉันพยายามแบ่งสตริงออกเป็นสองส่วนโดยใช้ regex สตริงถูกจัดรูปแบบดังนี้: text to extract<number> ฉันเคยใช้(.*?)<และใช้<(.*?)>งานได้ดี แต่หลังจากอ่านเป็น regex เล็กน้อยฉันเพิ่งเริ่มสงสัยว่าทำไมฉันต้องการ?ในการแสดงออก ฉันเพิ่งทำแบบนั้นหลังจากพบพวกเขาผ่านเว็บไซต์นี้ดังนั้นฉันไม่แน่ใจว่าสิ่งที่แตกต่างคืออะไร

12
Javascript: มองหาเชิงลบเทียบเท่า
มีวิธีการที่จะบรรลุเทียบเท่ากับการมองเชิงลบในการแสดงออกปกติจาวาสคริปต์? ฉันต้องการจับคู่สตริงที่ไม่ได้เริ่มต้นด้วยชุดอักขระเฉพาะ ดูเหมือนว่าฉันไม่สามารถหา regex ที่ทำได้โดยไม่ล้มเหลวหากพบส่วนที่ตรงกันที่จุดเริ่มต้นของสตริง คำค้นหาเชิงลบดูเหมือนจะเป็นคำตอบเดียว แต่จาวาสคริปต์ไม่มี แก้ไข: นี่คือ regex ที่ฉันต้องการทำงาน แต่ไม่: (?<!([abcdefg]))m ดังนั้นมันจะตรงกับ 'm' ใน 'jim' หรือ 'm' แต่ไม่ใช่ 'jam'

10
ระเบิดสตริงด้วยช่องว่างหรือแท็บอย่างน้อยหนึ่งรายการ
ฉันจะระเบิดสตริงด้วยช่องว่างหรือแท็บอย่างน้อยหนึ่งรายการได้อย่างไร ตัวอย่าง: A B C D ฉันต้องการทำให้อาร์เรย์เป็นแบบนี้
141 php  regex  explode 

12
ใช้ Java เพื่อค้นหาสตริงย่อยของสตริงที่ใหญ่กว่าโดยใช้ Regular Expression
ถ้าฉันมีสตริงแบบนี้: FOO[BAR] ฉันต้องการวิธีทั่วไปในการดึงสตริง "BAR" ออกจากสตริงเพื่อไม่ว่าสตริงใดที่อยู่ระหว่างวงเล็บเหลี่ยมก็จะสามารถรับสตริงได้ เช่น FOO[DOG] = DOG FOO[CAT] = CAT
141 java  regex  string 

3
ทำไม String.split จึงต้องใช้ตัวคั่นไพพ์เพื่อหนี
ฉันกำลังพยายามแยกไฟล์ที่มีแต่ละบรรทัดด้วยค่าที่คั่นด้วยไพพ์ มันไม่ทำงานอย่างถูกต้องเมื่อฉันไม่ได้หนีตัวคั่นไปป์ด้วยวิธีแยก แต่ก็ทำงานได้อย่างถูกต้องหลังจากที่ฉันหนีไปป์ตามด้านล่าง private ArrayList<String> parseLine(String line) { ArrayList<String> list = new ArrayList<String>(); String[] list_str = line.split("\\|"); // note the escape "\\" here System.out.println(list_str.length); System.out.println(line); for(String s:list_str) { list.add(s); System.out.print(s+ "|"); } return list; } ใครช่วยอธิบายหน่อยได้split()ไหมว่าทำไมต้องมีการหลบหนีจากตัวละครในท่อ?
140 java  regex  string 



14
Visual Studio Code - ลบบรรทัดว่างทั้งหมด - regex
ฉันใช้เวลาพยายามหาวิธีลบบรรทัดว่างทั้งหมดใน Visual Studio Code และไม่สามารถใช้งานได้ ใครรู้วิธีทำกรุณา? หากฉันค้นหา^$ในขณะที่พิมพ์ในช่องค้นหา VSC จะพบบรรทัดว่าง (บรรทัดว่างเปล่าหมายถึงไม่มีช่องว่างสีขาว) แต่จะไม่ลบออกเมื่อฉันกดแทนที่ทั้งหมด ไม่ทำอะไรเลย: สำหรับบรรทัดว่างที่มีช่องว่างการ^\s+$ค้นหาใช้งานได้ แต่ไม่ได้ลบออก มันทำอะไรแทนที่พวกเขาด้วยบรรทัดว่างโดยไม่มีช่องว่าง :)) ต้องเป็นฉันทำอะไรผิดแน่ ๆ ฉันคิดไม่ออกว่ามันคืออะไร มีใครรู้บ้าง? ขอบคุณ.

6
มีวิธีใดที่จะวางโค้ดที่เป็นอันตรายลงในนิพจน์ทั่วไปหรือไม่
ฉันต้องการเพิ่มความสามารถในการค้นหานิพจน์ปกติให้กับหน้าเว็บสาธารณะของฉัน นอกจากการเข้ารหัสHTMLแล้วฉันต้องทำอะไรเพื่อป้องกันการป้อนข้อมูลของผู้ใช้ที่เป็นอันตรายหรือไม่? การค้นหาของ Google เต็มไปด้วยผู้ที่แก้ไขปัญหาสนทนา - ใช้นิพจน์ทั่วไปเพื่อตรวจหาอินพุตที่เป็นอันตรายซึ่งฉันไม่สนใจในสถานการณ์ของฉันอินพุตของผู้ใช้เป็นนิพจน์ทั่วไป ฉันจะใช้ห้องสมุดRegexใน. NET (C #)
138 regex  security 

11
จะแยกนิพจน์ปกติที่มีความยาวออกเป็นหลายบรรทัดใน JavaScript ได้อย่างไร
ฉันมีนิพจน์ปกติที่ยาวมากซึ่งฉันต้องการแบ่งออกเป็นหลายบรรทัดในรหัส JavaScript ของฉันเพื่อให้แต่ละบรรทัดมีความยาว 80 บรรทัดตามกฎ JSLint ฉันคิดว่ามันดีกว่าสำหรับการอ่าน นี่คือตัวอย่างรูปแบบ: var pattern = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

6
สร้าง RegExps ได้ทันทีโดยใช้ตัวแปรสตริง
ว่าฉันต้องการทำให้สามารถใช้งานได้ดังต่อไปนี้: function replace_foo(target, replacement) { return target.replace("string_to_replace",replacement); } ฉันอาจทำสิ่งนี้: function replace_foo(target, string_to_replace, replacement) { return target.replace(string_to_replace,replacement); } ด้วยตัวอักษรสตริงนี้ง่ายพอ แต่ถ้าฉันต้องการเพิ่มความยุ่งยากเล็กน้อยกับ regex? ตัวอย่างเช่นพูดว่าฉันต้องการแทนที่ทุกอย่างแต่ string_to_replaceแต่โดยสัญชาตญาณฉันพยายามที่จะขยายด้านบนโดยทำสิ่งที่ชอบ: function replace_foo(target, string_to_replace, replacement) { return target.replace(/^string_to_replace/,replacement); } ดูเหมือนจะใช้งานไม่ได้ ฉันเดาว่ามันคิดว่าstring_to_replaceเป็นตัวอักษรสตริงมากกว่าตัวแปรที่เป็นตัวแทนของสตริง เป็นไปได้หรือไม่ที่จะสร้าง JavaScript regexes ได้ทันทีโดยใช้ตัวแปรสตริง สิ่งนี้จะดีถ้าเป็นไปได้ทั้งหมด: function replace_foo(target, string_to_replace, replacement) { var regex = "/^" + string_to_replace + "/"; …
138 javascript  regex 

12
ขอบเขตของคำใน regex คืออะไร?
ฉันใช้ Java regexes ใน Java 1.6 (เพื่อแยกวิเคราะห์เอาต์พุตตัวเลขท่ามกลางวัตถุประสงค์อื่น ๆ ) และไม่สามารถหาคำจำกัดความที่แม่นยำของ\b("ขอบเขตคำ") ได้ ฉันเดาว่า-12น่าจะเป็น "คำจำนวนเต็ม" (จับคู่โดย \b\-?\d+\b) แต่ดูเหมือนว่าจะใช้ไม่ได้ ฉันจะขอบคุณที่ทราบวิธีจับคู่ตัวเลขที่คั่นด้วยช่องว่าง ตัวอย่าง: Pattern pattern = Pattern.compile("\\s*\\b\\-?\\d+\\s*"); String plus = " 12 "; System.out.println(""+pattern.matcher(plus).matches()); String minus = " -12 "; System.out.println(""+pattern.matcher(minus).matches()); pattern = Pattern.compile("\\s*\\-?\\d+\\s*"); System.out.println(""+pattern.matcher(minus).matches()); ผลตอบแทนนี้: true false true

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