Kurallı İfadeler Ana konu

Kurallı ifadeler, dize eşlemesini gerçekleştirmek için kullanılır. Kurallı ifadelere ilişkin yaygın örneklerden bazılarını aşağıdaki tablolarda bulabilirsiniz. Kurallı ifade belirtmek için, ilgili kalıptan önce ".REG." operatörünü ekleyin.
Çeşitli çevrimiçi web siteleri ve öğreticiler mevcuttur. Bu türde bir site olan PerlDoc sitesi şu adreste bulunabilir:
UYARI
UYARI
Kurallı ifadeler, güçlü bir dize eşleme aracıdır. Bu nedenle, Trend Micro, kurallı ifadeleri kullanmayı seçen Yöneticilerin kurallı ifade söz dizimi hakkında bilgi sahibi ve deneyimli olmasını önerir. Başarıyla yazılmayan kurallı ifadeler, dramatik bir negatif etkiye sahip olabilir. Trend Micro, karmaşık söz dizimi kullanmayan basit kurallı ifadelerle başlamayı önerir. Yeni kurallar oluştururken, arşivleme eylemini kullanın ve Messaging Security Agent'ın kuralınızı kullanarak iletileri nasıl yönettiğini gözlemleyin. Kuralın beklenmedik herhangi bir sonuca neden olmayacağından emin olduğunuzda, eyleminizi değiştirebilirsiniz.

Kurallı İfade Örnekleri

Kurallı ifadelere ilişkin yaygın örneklerden bazılarını aşağıdaki tablolarda bulabilirsiniz. Kurallı ifade belirtmek için, ilgili kalıptan önce ".REG." operatörünü ekleyin.

Sayma ve Gruplama

Öğe
Bunun Anlamı
Örnek
.
Nokta karakteri yeni satır karakteri dışındaki herhangi bir karakteri temsil eder.
do.; doe, dog, don, dos, dot, vb. ile eşleşir.
d.r; deer, door, vb. ile eşleşir.
*
Yıldız karakteri, öğenin öncesinde sıfır veya daha fazla birim olduğu anlamına gelir.
do*; d, do, doo, dooo, doooo, vb. ile eşleşir.
+
Artı işareti karakteri, öğenin öncesinde bir veya daha fazla birim olduğu anlamına gelir.
do+; do, do, doo, dooo, doooo, vb. ile eşleşir, d ile değil.
?
Soru işareti karakteri, öğenin öncesinde sıfır veya bir birim olduğu anlamına gelir.
do?g; dg veya dog eşleşir ancak doog, dooog, vb. ile değil.
( )
Parantez karakterleri grubu arasındakiler tek bir birim gibi dikkate alınır.
d(eer)+; deer veya deereer veya deereereer, vb. ile eşleşir. + işareti, parantez içindeki alt dizeye uygulanır ve böylece regex, ardından bir veya daha fazla “eer.” grubu gelen d'yi arar.
[ ]
Köşeli parantez karakterleri bir karakter dizisini veya aralığını gösterir.
d[aeiouy]+; da, de, di, do, du, dy, daa, dae, dai, vb. ile eşleşir. + işareti parantez içindeki gruba uygulanır, böylece kurallı ifade d'den sonra gelen gruptaki bir veya daha fazla karakter için arama yapar [aeioy].
d[A-Z]; dA, dB, dC... dZ'ye kadar eşleşir. Köşeli parantez içindeki grup A ve Z arasındaki büyük harf aralığını gösterir.
[ ^ ]
Köşeli parantez içindeki ayar karakterleri mantıksal olarak belirtilen aralık grubunu etkisizleştirir, yani regex aralıkta veya grupta bulunmayan herhangi bir karakterle eşleşir.
d[^aeiouy]; kendisinden sonra sesli harf dışında herhangi bir karakter gelen db, dc veya dd, d9, d#--d ile eşleşir.
{ }
Büyük parantez karakterleri, öğenin öncesinde belirli bir olay sayısı belirler. Parantez içindeki tek değer, yalnız o kadar eşleşme olacağı anlamına gelir. Virgülle ayrılmış bir çift sayı, karakterin öncesinde geçerli bir grup sayı olduğunu gösterir. Ardından virgül gelen tek bir rakam, üst sınırın olmadığı anlamına gelir.
da{3}; ardından 3 ve yalnız 3 tane "a" gelen daaa--d ile eşleşir. da{2,4}; ardından 2, 3 veya 4 adet "a" gelen daa, daaa, daaaa ve daaaa (ama daaaaa değil)--d ile eşleşir. da{4,}; ardından 4 veya daha fazla "a" gelen daaaa, daaaaa, daaaaaa, vb. ile eşleşir.

Karakter Sınıfları (stenografi)

Öğe
Bunun Anlamı
Örnek
\d
Herhangi bir rakam karakteri; işlevsel olarak [0-9] or [[:rakam:]] ile eşit
\d; 1, 12, 123 vb. ile eşleşir ancak 1b7 ile eşleşmez--bir veya daha fazla rakam karakteriyle.
\D
Herhangi bir rakam karakteri; işlevsel olarak [^0-9] veya [^[:rakam:]] ile eşit
\D; a, ab, ab& ile eşleşir ancak 1 ile eşleşmez--bir veya daha fazla 0, 1, 2, 3, 4, 5, 6, 7, 8 veya 9 karakteriyle.
\w
Herhangi bir "sözcük" karakteri--herhangi bir alfasayısal karakter; [_A-Za-z0-9] veya [_[:alnum:]] ile işlevsel olarak eşittir
\w; a, ab, a1 ile eşleşir ancak !& ile eşleşmez--bir veya daha fazla büyük veya küçük harf veya rakam, ancak noktalama veya diğer özel karakterler değil.
\W
Alfasayısal olmayan herhangi bir karakter; [^_A-Za-z0-9] veya [^_[:alnum:]] ile eşittir
\W; *, & ile eşleşir ancak ace veya a1 karakteriyle değil--bir veya daha fazla karakter ancak büyük veya küçük harfler ve rakamlar değil.
\s
Herhangi bir alfabe dışı karakter; boşluk, yeni satır, sekme, bölünemez boşluk, vb.; işlevsel olarak [[:space]] ile eşittir
sebze\s, “sebze” ve ardından gelen herhangi bir alfabe dışı karakter ile eşleşir. Böylece "Çorbada sebze severim" ifadesi kurallı ifadeyi tetikler ancak "Sebzeli çorba severim" ifadesi tetiklemez.
\S
Herhangi bir alfabe dışı olmayan karakter; boşluk, yeni satır, sekme, bölünemez boşluk, vb. haricinde; işlevsel olarak [^[:space]] ile eşittir
sebze\S, "sebze" ve ardından gelen herhangi bir alfabe dışı olmayan karakter ile eşleşir. Böylece "Sebzeli çorba severim" ifadesi kurallı ifadeyi tetikler ancak "Çorbada sebze severim" ifadesi tetiklemez.

Karakter Sınıfları

Öğe
Bunun Anlamı
Örnek
[:alpha:]
Herhangi bir alfabe karakteri
.REG. [[:alpha:]] abc, def, xxx ile eşleşir ancak 123 veya @#$ ile değil.
[:digit:]
Herhangi bir rakam karakteri; işlevsel olarak \d ile eşittir
.REG. [[:digit:]] 1,12, 123, vb. ile eşleşir.
[:alnum:]
Herhangi bir "sözcük" karakteri--herhangi bir alfasayısal karakter; işlevsel olarak \w ile eşit
.REG. [[:alnum:]] abc, 123 ile eşleşir ancak ~!@ ile değil.
[:space:]
Herhangi bir alfabe dışı karakter; boşluk, yeni satır, sekme, bölünemez boşluk, vb.; işlevsel olarak \s ile eşittir
.REG. (sebze)[[:space:]] "sebze" ve ardından gelen herhangi bir alfabe dışı karakter ile eşleşir. Böylece "Çorbada sebze severim" ifadesi kurallı ifadeyi tetikler ancak "Sebzeli çorba severim" ifadesi tetiklemez.
[:graph:]
Boşluk dışındaki herhangi bir karakter, kontrol karakterleri veya benzeri
.REG. [[:graph:]] 123, abc, xxx, ><” ile eşleşir ancak boşluk veya kontrol karakterleri ile eşleşmez.
[:print:]
Herhangi bir karakter ([:graph:] ile benzer) ancak boşluk karakteri içerir
.REG. [[:print:]] 123, abc, xxx, ><” ve boşluk karakterleri ile eşleşir.
[:cntrl:]
Herhangi bir kontrol karakteri (örn. CTRL + C, CTRL + X)
.REG. [[:cntrl:]] 0x03, 0x08 ile eşleşir ancak abc, 123, !@# ile değil.
[:blank:]
Boşluk ve sekme karakterleri
.REG. [[:blank:]] boşluk ve sekme karakterleri ile eşleşir ancak 123, abc, !@# ile eşleşmez
[:punct:]
Noktalama karakterleri
.REG. [[:punct:]] şunlarla eşleşir ; : ? ! ~ @ # $ % & * ‘ “ , vb., ancak 123, abc ile eşleşmez
[:lower:]
Herhangi bir küçük harfli alfabetik karakter (Not: 'Büyük/küçük harf duyarlı eşleme' etkinleştirilmezse [:alnum:] olarak işlev görecektir.)
.REG. [[:lower:]] abc, Def, bAskı, Yap, vb. ile eşleşir, ABC, DEF, BASKI, YAP, 123, !@# ile eşleşmez.
[:upper:]
Herhangi bir büyük harfli alfabetik karakter (Not: 'Büyük/küçük harf duyarlı eşleme' etkinleştirilmezse [:alnum:] olarak işlev görecektir.)
.REG. [[:upper:]] ABC, DEF, BASKI, YAP vb. ile eşleşir, abc, Def, bAskı, Yap, 123, !@# ile eşleşmez.
[:xdigit:]
Onaltılık sayıda izin verilen basamaklar (0-9a-fA-F)
.REG. [[:xdigit:]] 0a, 7E, 0f, vb. ile eşleşir

Kalıp Bağlantıları

Öğe
Bunun Anlamı
Örnek
^
Dizenin başlangıcını gösterir.
^(ancak); "ancak" ile başlayan herhangi bir metin bloku ile eşleşir. Böylece "ancak çorbada sebze sevdiğim bir gerçektir" ifadesi kurallı ifadeyi tetikler ama "Çorbada sebze sevmediğim gerçektir ancak" ifadesi tetiklemez.
$
Dizenin sonunu gösterir.
(ancak)$; "ancak" ile biten herhangi bir metin bloku ile eşleşir. Böylece "Ancak çorbada sebze sevdiğim bir gerçektir" ifadesi kurallı ifadeyi tetiklemez ama "Çorbada sebze sevmediğim gerçektir ancak" ifadesi tetikler.

Kaçış Sıraları ve Düz Dizeler

Öğe
Bunun Anlamı
Örnek
\
Kurallı ifadede özel anlam içeren bazı karakterlerin eşleşmesi için (örneğin "+").
(1) .REG. C\\C\+\+, ‘C\C++’ ile eşleşir.
(2) .REG. \*, * ile eşleşir.
(3) .REG. \? ? ile eşleşir.
\t
Sekme karakterini gösterir.
(baskı)\t; "baskı" alt dizesi ve hemen ardından gelen bir sekme (ASCII 0x09) karakteri içeren metin bloku ile eşleşir.
\n
Yeni satır karakterini gösterir.
Nota
Nota
Farklı platformlar, yeni bir satır karakterini gösterir. Windows üzerinde, yeni bir satır bir karakter çifti, satır başının ardından yeni bir satırdır. Unix ve Linux üzerinde, yeni bir satır sadece yeni satırdır; Macintosh üzerinde yeni bir satır sadece satır başıdır.
(baskı)\n\n; "baskı" alt dizesi ve hemen ardından gelen iki yeni satır (ASCII 0x0A) karakteri içeren metin bloku ile eşleşir.
\r
Satır başı karakterini gösterir.
(baskı)\r; "baskı" alt dizesi ve hemen ardından gelen bir satır başı (ASCII 0x0D) karakteri içeren metin bloku ile eşleşir.
\b
Geri alma karakterini gösterir.
OR
Sınırları gösterir.
(baskı)\b; "baskı" alt dizesi ve hemen ardından gelen bir geri alma (ASCII 0x08) karakteri içeren metin bloku ile eşleşir.
Kelime sınırı (\b), \W ile eşleşirken dizenin başında ve sonunda tahmini karakteri atarak bir tarafta \w ve diğer tarafta \W içeren (her iki sırada) iki karakter arasındaki bir nokta olarak tanımlanır. (Karakter sınıfları içinde \b, kelime sınırından çok geri alma karakterini temsil eder.)
Örneğin, aşağıdaki kurallı ifade sosyal güvenlik numarasıyla eşleşebilir. .REG. \b\d{3}-\d{2}-\d{4}\b
\xhh
Belirli onaltılı kod ile bir ASCII karakterini gösterir (hh, iki basamaklı herhangi bir onaltılı değeri temsil eder).
\x7E(\w){6}, öncesinde bir ~ (yaklaşık) karakteri ile tam altı alfasayısal karakterli bir "kelime" içeren metin bloku ile eşleşir. Böylece '~ab12cd', '~Pa3499' sözcükleri eşleşebilir ancak '~oops' ile eşleşmez.

Kurallı İfade Oluşturucu

Veri Kaybını Önleme kurallarını nasıl yapılandıracağınıza karar verirken, kurallı ifade oluşturucunun aşağıdaki kurallara ve kısıtlamalara göre yalnızca basit ifadeler oluşturabileceğini göz önünde bulundurun:
  • Yalnızca alfasayısal karakterler değişken olabilir.
  • Diğer tüm karakterler, örneğin [-], [/], vb. yalnızca sabit olabilir.
  • Değişken aralığı yalnızca A-Z ve 0-9 arasında olabilir; örneğin aralığı A-D biçiminde sınırlayamazsınız.
  • Bu aracın oluşturduğu kurallı ifadeler küçük/büyük harf duyarlıdır.
  • Bu aracın oluşturduğu kurallı ifadeler yalnızca pozitif eşleşme yapabilir, negatif eşleşme yapamaz ("eşleşme olmazsa").
  • Örneğinize dayanan ifadeler yalnızca örneğinizle aynı sayıdaki karakterlerle ve boşluklarla eşleşebilir; bu araç belirtilen karakter veya dizenin "bir veya birden fazlası" ile eşleşen kalıplar oluşturamaz.

Karmaşık İfade Söz Dizimi

Anahtar sözcük, ifadeyi içerikle eşleştirmek için kullanılan en küçük birim olan sembollerden oluşur. Sembol; bir operatör, mantıksal bir sembol veya işlenen, yani operatörün üzerinde çalıştığı argüman veya değer olabilir.
.AND., .OR., .NOT., .NEAR., .OCCUR., .WILD., “.(.” ve “ .).” operatörlerden birkaçıdır. İşlenenle operatörün bir boşlukla ayrılması gerekir. Bir işlenen de çeşitli semboller içerebilir. Bkz. Anahtar Sözcükler.

Çalışmada Kurallı İfadeler

Aşağıdaki örnekte, varsayılan filtrelerden biri olan Sosyal Güvenlik içerik filtresinin nasıl çalıştığı açıklanmaktadır:
[Format] .REG. \b\d{3}-\d{2}-\d{4}\b
Yukarıdaki ifadede; geri alma karakteri olan \b, ardından da herhangi bir basamak olan \d ve basamak sayısını belirten {x}, son olarak da bir tire olan - karakteri kullanılmaktadır. Bu ifadeler sosyal güvenlik numarasıyla eşleşir. Aşağıdaki tabloda, örnek kurallı ifadeyle eşleşen dizeler açıklanmaktadır:

Sosyal Güvenlik Kurallı İfadesi ile Eşleşen Sayılar

.REG. \b\d{3}-\d{2}-\d{4}\b
333-22-4444
Eşleştir
333224444
Bir eşleşme değil
333 22 4444
Bir eşleşme değil
3333-22-4444
Bir eşleşme değil
333-22-44444
Bir eşleşme değil
İfadeyi şu şekilde değiştirirseniz,
[Format] .REG. \b\d{3}\x20\d{2}\x20\d{4}\b
yeni ifade aşağıdaki sırayla eşleşir:
333 22 4444