ฉันจะใช้ regex เพื่อแทนที่ตัวพิมพ์ใหญ่ด้วยตัวพิมพ์เล็กใน Intellij IDEA ได้อย่างไร


92

ฉันได้ไปหาสิ่งนี้มาแล้วและพบว่าจะทำอย่างไรกับตัวแยกวิเคราะห์ regex อื่น ๆ :

http://vim.wikia.com/wiki/Changing_case_with_regular_expressions
http://www.regular-expressions.info/replacecase.html

ฉันได้ลองสิ่งเหล่านี้แล้วและไม่ได้ผล ตัวอย่างเช่นฉันต้องการใช้ regex เพื่อเปลี่ยนแปลงสิ่งนี้:

private String Name;
private Integer Bar = 2;

สำหรับสิ่งนี้:

private String name;
private Integer bar = 2;

ฉันลองทำสิ่งนี้:

replace: private (\S+) (\S+)
with: private $1 $L$2
with: private $1 \L$2
with: <etc.>

ไม่มีใครทำงาน เป็นไปได้ไหมที่จะทำใน intellij หรือเป็นคุณสมบัติที่ขาดหายไป? นี่เป็นเพียงเพื่อการศึกษาและเป็นตัวอย่างที่จัดทำขึ้น ฉันแค่อยากรู้ว่านี่เป็นไปได้ไหมที่จะทำใน intellij


3
มีเหตุผลที่คุณต้องการใช้ regex หรือไม่? IntelliJ มีปุ่มลัดสำหรับทำเช่นนั้น
ajp15243

@ ajp15243 นี่เป็นเพียงเพื่อการศึกษาและเป็นตัวอย่างที่จัดทำขึ้น ฉันอยากรู้ว่านี่เป็นไปได้ไหมที่จะทำใน intellij
Daniel Kaplan

3
พอใช้! แค่อยากให้แน่ใจ ฉันพบข้อมูลอ้างอิง IntelliJ Regex Syntaxและในความคิดเห็นมีคนถามคำถามเดียวกันกับคุณ ผู้ดูแลตอบ (และฉันคิดว่าเข้าใจผิดเล็กน้อย) แต่คำตอบบ่งชี้ว่าสิ่งนี้ไม่สามารถทำได้กับไวยากรณ์ regex ของ IntelliJ
ajp15243

คุณสามารถเขียนปลั๊กอินสำหรับสิ่งนั้นได้ตลอดเวลา
โอ

1
@tieTYT gaoagong สวยดีฉันจะปล่อยให้เขามี :)
ajp15243

คำตอบ:


174

ใน IDEA 15คุณสามารถใช้สวิตช์ด้านล่างเพื่อสลับกรณีของนิพจน์ที่จับได้ ตอนนี้เอกสารนี้ได้รับการบันทึกอย่างเป็นทางการตั้งแต่เวอร์ชันนี้เผยแพร่

  • \l: ลดกรณีของอักขระถัดไป
  • \u: ขึ้นกรณีของอักขระถัดไป
  • \L: ลดตัวพิมพ์เล็กของอักขระถัดไปจนถึงจุด\Eหรือสิ้นสุดของสตริงการแทนที่
  • \U: อัพกรณีของอักขระถัดไปจนถึง\Eหรือสิ้นสุดของสตริงแทนที่
  • \E: ทำเครื่องหมายจุดสิ้นสุดของการเปลี่ยนแปลงกรณีและปัญหาที่เริ่มต้นโดย\Uหรือ\L

นี่คือตัวอย่างการใช้งาน (เนื่องจากเอกสารไม่ชัดเจน):

ค้นหา: (\ w + _) + (\ w +) แทนที่: \ L $ 1 $ 2 \ E

ข้างต้นจะแปลงFOO_BAR_BAZเป็นfoo_bar_bazอื่น ๆ $ 1 หมายถึงกลุ่มการจับภาพแรกที่พบ (ในวงเล็บ), $ 2 เป็นชุดที่สองเป็นต้น

เพื่อเห็นแก่ลูกหลานของนี้เป็นครั้งแรกที่รายงานโดย @gaoagong และเอกสารมี


13

ค้นหาคำตอบแล้วจึงรู้ว่า @ ajp15243 ได้ตอบไว้ข้างบนนี้แล้ว ขณะนี้ Intellij ไม่มีวิธีใดในการใช้คุณสมบัติการแทนที่ regex เพื่อเปลี่ยนกรณีของจดหมาย มีการอภิปรายสั้น ๆ ที่ URL ต่อไปนี้เกี่ยวกับคุณลักษณะนี้

http://www.jetbrains.com/idea/webhelp/regular-expression-syntax-reference.html

คุณยังสามารถลงคะแนนให้กับคุณลักษณะนี้ในปัญหา Youtrack ได้ที่นี่:

http://youtrack.jetbrains.com/issue/IDEA-70451

มีปลั๊กอิน regex Intellij แต่อนิจจามันยังไม่รองรับปลอกล่างและตัวบน

http://plugins.jetbrains.com/plugin/19?pr=idea

คุณอาจต้องเรียกใช้ไฟล์ผ่านโปรแกรม perl เพื่อแทนที่อย่างถูกต้อง


1
ตาม youtrack นี้จะถูกเพิ่มในเวอร์ชัน 15 ของ IntelliJ
Kevin Sheehan

6

ฉันเริ่มใช้ปลั๊กอินIdea Vimและเรียนรู้ที่จะทำสิ่งนี้ใน Vim ด้วยวิธีนี้ฉันสามารถใช้ทักษะเหล่านี้ซ้ำได้อีกครั้งนอก Idea

นี่คือคำสั่งกลุ่มเพื่อทำสิ่งที่คุณขอ

:%s/private\s\(\w*\)\s\(w*\)/private \1 \L\2/g

Regex ถูกป้อนภายใน IDE จำเป็นต้องใช้เครื่องหมายทับพิเศษเพื่อหลีกเลี่ยงรูปแบบ regex ไปยัง Vim

ภายใน IDE

ค้นหา Plugin จากภายใน IDE ป้อนคำอธิบายภาพที่นี่


2
วิธีแก้ปัญหาใหญ่ที่อาจไม่ช่วย 99% ของผู้คนที่นี่เนื่องจากพวกเขาไม่ต้องการใช้การจำลอง VIM แต่ฉันได้ติดตั้งปลั๊กอินนี้แล้วดังนั้นมันจึงใช้งานได้สำหรับฉัน :)
Daniel Kaplan

1
ฉันรู้ว่า .. Vi และ Vim ดูเหมือนความชั่วร้ายที่ไร้ประโยชน์สำหรับทุกคนที่ใช้ IDE ในที่สุดฉันก็เริ่มเรียนรู้ Vi หลังจากพบพวกเขาทั้งหมดในเซิร์ฟเวอร์ ฉันชอบตอนนี้ที่ฉันไม่ต้องเปลี่ยนความคิดเมื่อฉันย้ายไปมาระหว่างเครื่องมือ
chinto

ฉันเพิ่งเริ่มใช้งานยังไม่คล่อง คุณคิดว่าการแก้ไขใน Intellij-IDEA ด้วย IDEAVim มีประสิทธิผลมากกว่าก่อนที่คุณใช้ Vi หรือไม่?
Daniel Kaplan

1
ขึ้นเรื่อย ๆ .. เคยดีกับคราส จากนั้นย้ายไปที่ Intellij และเรียนรู้เทคนิคส่วนใหญ่ จากนั้นก็ตระหนักได้ว่าการเรียนรู้ Vim จะทำให้ฉันเก่งใน Server และ Workstation ในคราวเดียว ฉันยังเห็นว่า Vim มีประสิทธิภาพมากกว่าในการจัดการข้อความและการนำทาง ฉันยังคงใช้ทางลัด IDE สำหรับความเชี่ยวชาญ IDE ทั้งหมดเช่นการปรับโครงสร้างและการค้นหาการอ้างอิงและไปที่ def เป็นต้น แต่ก็เป็นการสลับระหว่างโหมดต่างๆ
chinto

1
นี่เป็นทางออกที่ยอดเยี่ยมสำหรับผู้ที่รู้วิธีใช้ vi ฉันเปิด IdeaVim เมื่อฉันต้องการทำการแทนที่ที่ซับซ้อนจากนั้นปิดอีกครั้งเพื่อเพลิดเพลินกับคุณสมบัติตัวแก้ไขของ Idea ฉันหวังว่า IdeaVim จะมีตัวบ่งชี้ที่จะแสดงเมื่อมีการใช้งานอยู่
Mr. Lance E Sloan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.