Latest web development tutorials

การแสดงออกปกติ Perl

regex (regular expression) อธิบายชุดของสตริงที่สามารถใช้เพื่อตรวจสอบว่าสตริงย่อยมีบางอย่างที่ตรงกับ substring ไม่เปลี่ยนหรือลบเงื่อนไขตรงกับสตริงย่อยจากสตริง เป็นต้น

ฟังก์ชั่น regex Perl ของภาษาที่มีประสิทธิภาพมากพื้นภาษาทั่วไปมีประสิทธิภาพมากที่สุดในการออกแบบภาษาสนับสนุนการแสดงออกหลายปกติเมื่อมีการอ้างอิงนิพจน์ปกติ Perl

สามรูปแบบของการแสดงออกปกติ Perl จะถูกจับคู่, ทดแทนและการแปลง:

  • การจับคู่: m / / (นอกจากนี้ยังเรียกโดยย่อว่า / / m ละเว้น)

  • แทนที่: S / / /

  • การแปลง: TR / / /

ทั้งสามรูปแบบและมัก= ~ หรือ ~กับการใช้งาน = ~ แสดงให้เห็นถึงการแข่งขัน! ~ กล่าวว่าพวกเขาไม่ตรงกับ


ผู้ประกอบการแข่งขัน

การแข่งขันประกอบเมตร // ใช้เพื่อให้ตรงกับสตริงหรือคำสั่งที่แสดงออกปกติตัวอย่างเช่นเพื่อให้ตรงกับบาร์เกลา $ ใน "Run" รหัสดังต่อไปนี้:

#!/usr/bin/perl

$bar = "I am w3big site. welcome to w3big site.";
if ($bar =~ /run/){
   print "第一次匹配\n";
}else{
   print "第一次不匹配\n";
}

$bar = "run";
if ($bar =~ /run/){
   print "第二次匹配\n";
}else{
   print "第二次不匹配\n";
}

โปรแกรมข้างต้นผลลัพธ์คือ:

第一次匹配
第二次匹配

การปรับเปลี่ยนรูปแบบการจับคู่

มีบางรูปแบบทั่วไปการปรับเปลี่ยนการจับคู่มีดังต่อไปนี้:

การปรับเปลี่ยน ลักษณะ
ผม ละเว้นโหมดโครงสร้างเงินทุน
ม. โหมดหลายสาย
โอ ที่ได้รับมอบหมายเพียงครั้งเดียวเท่านั้น
s โหมดบรรทัดเดียว "." จับคู่ "\ n" (เริ่มต้นไม่ตรง)
x ละเว้นโหมดว่างเปล่า
ก. การแข่งขันระดับโลก
เซนติกรัม หลังจากความล้มเหลวของการจับคู่โลกที่จะช่วยให้การหาการจับคู่สายอีกครั้ง

ตัวแปร regex

Perl จะมีอยู่หลังจากการประมวลผลเพื่อให้ตรงกับค่าของสามชื่อตัวแปรพิเศษ:

  • ส่วนหน้าของส่วนการจับคู่สาย: $ `
  • $ &: การจับคู่สาย
  • $ ': ไม่ตรงกับสายที่เหลือ

หากทั้งสามตัวแปรร่วมกันคุณจะได้รับสายเดิม

ตัวอย่างมีดังนี้

#!/usr/bin/perl

$string = "welcome to w3big site.";
$string =~ m/run/;
print "匹配前的字符串: $`\n";
print "匹配的字符串: $&\n";
print "匹配后的字符串: $'\n";

เอาท์พุทโปรแกรมข้างต้นเป็น:

匹配前的字符串: welcome to 
匹配的字符串: run
匹配后的字符串: oob site.

ผู้ประกอบการชดเชย

ผู้ประกอบการ /// เปลี่ยนตัวผู้ประกอบการคือเพื่อให้ตรงกับการขยายตัวของการใช้งานของสตริงใหม่เพื่อแทนที่สตริงที่ระบุ รูปแบบพื้นฐานจะเป็นดังนี้:

s/PATTERN/REPLACEMENT/;

รูปแบบเพื่อให้ตรงกับรูปแบบการเปลี่ยนเพื่อแทนที่สตริง

ยกตัวอย่างเช่น "google" เราจะเข้ามาแทนที่สตริงต่อไปนี้คือ "w3big":

#!/usr/bin/perl

$string = "welcome to google site.";
$string =~ s/google/w3big/;

print "$string\n";

เอาท์พุทโปรแกรมข้างต้นเป็น:

welcome to w3big site.

ปรับปรุงการดำเนินการแทนที่

แทนที่ปรับปรุงการดำเนินการดังต่อไปนี้:

การปรับเปลี่ยน ลักษณะ
ผม ถ้าคุณเพิ่ม "ฉัน" ในปรับปรุงแล้วไวกรณีปกติจะถูกยกเลิก "A" และ "A" จะเหมือนกัน
ม. เริ่มต้นเริ่มต้นปกติ "^" และจุดสิ้นสุด "$" เป็นเพียงสตริงปกติถ้าคู่กับ "M" ปรับปรุงแล้วจุดเริ่มต้นและจุดสิ้นสุดของแต่ละสายจะอ้างถึงสตริง: ที่จุดเริ่มต้นของแต่ละบรรทัดคือ "^" ท้ายที่สุดก็คือ "$."
โอ การแสดงออกจะถูกดำเนินการเพียงครั้งเดียว
s ถ้าคุณเพิ่ม "S" ในปรับปรุงแล้วเริ่มต้น. "" ในนามของตัวอักษรใด ๆ ยกเว้นการขึ้นบรรทัดใหม่จะกลายเป็นตัวละครใด ๆ รวมทั้งการขึ้นบรรทัดใหม่เป็น!
x ถ้าคุณเพิ่มปรับปรุงการแสดงออกของตัวละครว่างเปล่าจะถูกละเว้นเว้นแต่จะได้รับการหลบหนี
ก. แทนที่สตริงที่ตรงกันทั้งหมด
E ในฐานะที่เป็นนิพจน์สตริงทดแทน

ผู้ประกอบการแปลง

ต่อไปนี้เป็นผู้ประกอบการปรับเปลี่ยนแปลงที่เกี่ยวข้อง:

การปรับเปลี่ยน ลักษณะ
C แปลงของตัวละครทั้งหมดที่ไม่ได้ระบุไว้
D ลบตัวอักษรที่ระบุทั้งหมด
s การส่งออกหดเดียวกันส่วนใหญ่ของตัวละคร

ตัวอย่างต่อไปนี้ $ ตัวแปรสตริงในตัวอักษรพิมพ์เล็กทั้งหมดแปลงเป็นตัวพิมพ์ใหญ่:

#!/usr/bin/perl 

$string = 'welcome to w3big site.';
$string =~ tr/a-z/A-z/;

print "$string\n";

เอาท์พุทโปรแกรมข้างต้นเป็น:

WELCOME TO w3big SITE.

ตัวอย่างต่อไปนี้ใช้ตัวแปร $ สตริง / S ตัวอักษรลบซ้ำ:

#!/usr/bin/perl

$string = 'w3big';
$string =~ tr/a-z/a-z/s;

print "$string\n";

เอาท์พุทโปรแกรมข้างต้นเป็น:

runob

ตัวอย่างเพิ่มเติมได้ที่:

$string =~ tr/\d/ /c;     # 把所有非数字字符替换为空格
$string =~ tr/\t //d;     # 删除tab和空格
$string =~ tr/0-9/ /cs    # 把数字间的其它字符替换为一个空格。

กฎการแสดงออกมากกว่าปกติ

การแสดงออก ลักษณะ
. ตรงกับตัวละครทุกตัวยกเว้นการขึ้นบรรทัดใหม่
X? การแข่งขัน 0 หรือ x สตริง
x * การแข่งขัน 0 ครั้งหรือมากกว่า x สตริง แต่จำนวนขั้นต่ำของการแข่งขันที่เป็นไปได้
x + การแข่งขัน 1 ครั้งหรือมากกว่า x สตริง แต่จำนวนขั้นต่ำของการแข่งขันที่เป็นไปได้
. * การแข่งขัน 0 ครั้งหรือมากกว่าตัวอักษรใด ๆ
. + การแข่งขัน 1 ครั้งหรือมากกว่าโดยตัวอักษรใด ๆ
{m} ตรงกับสตริงที่ระบุเมตร
{m, n} ตรงกันเมตรหรือมากกว่าหรือน้อยกว่าที่ระบุสตริง n
{m} Match เมตรหรือสตริงที่ระบุเพิ่มเติม
[] ซึ่งตรงกับตัวละครภายใน [A]
[^] แข่งขันไม่ได้พบกับตัวละครใน []
[0-9] ตรงกับตัวอักษรตัวเลขทั้งหมด
[Az] ตรงกับตัวอักษรตัวพิมพ์เล็กทั้งหมด
[^ 0-9] ตรงกับทุกตัวละครที่ไม่ใช่ตัวเลข
[^ Az] ตรงกับตัวอักษรตัวพิมพ์เล็ก ๆ
^ เป็นตัวละครที่ตรงกับจุดเริ่มต้น
$ ตรงกับตัวละครในตอนท้ายของตัวละครตัวนี้
\ D ตรงกับตัวละครหลักและ [0-9] ไวยากรณ์เดียวกัน
\ D + ตรงกับสตริงตัวเลขหลายและ [0-9] + ไวยากรณ์เป็น
\ D ไม่ใช่ดิจิตอลอื่น ๆ ที่มี \ D
\ D + ไม่ใช่ดิจิตอลอื่น ๆ ที่มี \ D +
\ W สตริงของตัวอักษรหรือตัวเลขและ [a-zA-Z0-9] ไวยากรณ์เป็น
\ W + และ [a-zA-Z0-9] + ไวยากรณ์เป็น
\ W ตัวอักษรที่ไม่ใช่ภาษาอังกฤษหรือตัวเลขสตริงและ [^ A-ZA-Z0-9] ไวยากรณ์เดียวกัน
\ W + และ [^ A-ZA-Z0-9] + ไวยากรณ์เป็น
\ S ช่องว่างและ [\ n \ t \ r \ F] ไวยากรณ์เดียวกัน
\ S + และ [\ n \ t \ r \ F] + เป็น
\ S ไม่ใช่ช่องว่างและ [^ \ n \ t \ r \ F] ไวยากรณ์เดียวกัน
\ S + และ [^ \ n \ t \ r \ F] + ไวยากรณ์เป็น
\ B ตัวอักษรภาษาอังกฤษตัวเลขสตริงขอบเขตการจับคู่
\ B ตรงกันในตัวอักษรสตริงเขตแดนตัวเลข
a | b | C ในบรรทัดที่มีสายอักขระที่ตรงกับตัวอักษรหรือตัวอักษร B หรือค
เอบีซี เอบีซีจับคู่สาย (รูปแบบ) ประกอบด้วย () จะจำได้ว่าสัญลักษณ์นี้เพื่อหาสตริงมันเป็นไวยากรณ์ที่มีประโยชน์มาก. สตริงแรก (ภายใน) พบตัวแปรนี้จะกลายเป็น $ 1 หรือ \ 1 ตัวแปรที่สอง (ภายใน) พบว่ามีตัวแปรสตริงเป็นตัวแปร $ 2 หรือ \ 2 และอื่น ๆ ลง
/ รูปแบบ / i ผมพารามิเตอร์นี้บ่งชี้ว่าไม่สนใจกรณีที่ในภาษาอังกฤษนั่นคือเมื่อสตริงการแข่งขันไม่สนใจคำถามกรณีที่ในภาษาอังกฤษ. \ ถ้าคุณต้องการที่จะหาอักขระพิเศษในโหมดรูปแบบเช่น "*" จะต้องมีการเพิ่มในด้านหน้าของตัวละคร ใน \ สัญลักษณ์นี้จะช่วยให้ตัวอักษรพิเศษล้มเหลว