Aracılığıyla paylaş


TR1 Regular Expressions

Bu konuda aynı TR1 destekleyen çeşitli normal ifade altyapılarının anlatılmaktadır.

Bu Konuda

  • Normal ifade dilbilgisi

  • Dilbilgisi özeti

  • Anlamsal ayrıntıları

  • Arama ve eşleştirme

  • Biçimlendirme işaretleri

Normal ifade dilbilgisi

Bb982727.collapse_all(tr-tr,VS.110).gifÖge

Bir öğenin aşağıdaki şeyden biri olabilir:

  • Bir normal karakter , hedef sıra aynı karakterle eşleşir.

  • A joker karakter '.', hedef sıra bir yeni satır dışında herhangi bir karakterle eşleşir.

  • A ayraç ifadesi formunun "expr", bir karakter veya bir deyim tarafından tanımlanan kümesi de bulunduğu hedef sıra harmanlama öğesinde eşleşenexpr, ya da formun "[^expr", bir karakter veya bir deyim tarafından tanımlanan kümesi değil hedef sıra harmanlama öğesinde eşleşenexpr.

    İfade expr herhangi bir bileşimini şunları içerebilir:

    • Tek bir karakter. Bu karakter kümesi tarafından tanımlanan ekler expr.

    • A karakter aralığı formunun "ch1-ch2". Kapalı aralığındaki değerleri tarafından temsil edilen karakterler ekler ch1, ch2 kümesi tarafından tanımlananexpr.

    • A karakter sınıfı formunun "[:name:]". Karakter kümesi tarafından tanımlanan adlandırılmış sınıfında ekler expr.

    • Bir eşdeğerlik sınıfı formunun "[=elt=]". Eşdeğer harmanlama öğeleri ekler elt tarafından tanımlanan kümesine expr.

    • A harmanlama sembol formunun "[.elt.]". Harmanlama öğesi ekler elt tarafından tanımlanan kümesine expr.

  • Bir bağlantı. Çapa ' ^' hedef sırası; başlangıcı ile eşleşir çapa '$' hedef sıranın sonuna eşleşiyor.

A yakalama grubunu formunun "( Alt ifadeyi )", veya "\ ( Alt ifadeyi \)", BRE ve grep, desen sınırlayıcı arasında eşleşen hedef sıra karakter dizisini eşleşir.

  • Bir kimlik çıkış formunun "\k", eşleşen karakter k hedef sırada.

Örnekler:

  • "a" ile eşleşen hedef sıra hedef sıraları "b", "b" veya "c" "a" ancak eşleşmiyor.

  • "." Hedef sıraları ile eşleşen "a", "b", "b" ve "c".

  • "[b-z]" eşleşen hedef sıraları "b" ve "c" ancak hedef sıralarının eşleşmiyor "a" veya "b".

  • "[: Düşük:]" "a", "b", hedef sıralarının eşleşir ve "c" ancak "b" hedef sıra eşleşmiyor.

  • "(a)" eşleşen hedef sırası "a" associates ile subsequence Grup 1 yakalamak ve "a", ancak hedef sıraları "b", "b" veya "c" ile eşleşmiyor.

De ECMAScript, BRE, ve grep, bir öğe de olabilir bir başvuru geri formunun "\dd", nerede dd ondalık değer n. dereceden eşleşen karakter dizisi ile aynı hedef sırada bir karakter dizisi ile eşleşen n temsil Grup yakalama. Örneğin, "(a) \1" hedef sırası "aa" eşleşen ilk (ve tek) yakalama grubunu ilk sıra eşleştiğinden "a" ve ardından \1 eşleşen son sıra "a".

De ECMAScript, öğenin ayrıca aşağıdaki şeyden biri olabilir:

  • A Yakalama Grup form "(?: Alt ifadeyi )". Desen sınırlayıcı arasında eşleşen hedef sıra karakter dizisi ile eşleşir.

  • Sınırlı Dosya biçimi çıkış , form "\f", "\n", "\r", "\t" veya "\v". Bu form besleme, yeni satır, satır başı, yatay sekme ve dikey sekme sırasıyla, hedef sıra ile eşleşir.

  • A pozitif onaylama form "(? = Alt ifadeyi )". Hedef sıra desen sınırlayıcı arasında eşleşti, ancak hedef sırasına eşleştirme konumu değişmez karakter dizisi ile eşleşir.

  • A negatif onaylama formun? "(! Alt ifadeyi ) ". Hedef sıra arasında sınırlayıcılar desenle eşleşmiyor ve hedef sıra eşleşme konumu değişmez bir karakter ile eşleşir.

  • A onaltılık kaçış dizisi formunun "\xhh". İki onaltılık basamak tarafından temsil edilen hedef sırada bir karakterle eşleşir hh.

  • A unicode kaçış dizisi formunun "\uhhhh". Dört onaltılı basamak tarafından temsil edilen hedef sırada bir karakterle eşleşir hhhh.

  • A Denetim kaçış dizisi formunun "\ck". Karakter adlı denetim karakteri ile eşleşir k.

  • A sözcük sınırına onaylama formunun "\b". Hemen sonra hedef sırası geçerli konuma geldiğinde eşleşen bir sözcük sınırına.

  • A olumsuz sözcük sınırına onaylama formunun "\b". Hedef sırası geçerli konumda değil hemen sonra eşleşen bir sözcük sınırına.

  • A dsw karakteri kaçış formunun "\d" "\d" "\s", "\s", "\w", "\w". Karakter sınıfı için kısa bir ad sağlar.

Örnekler:

  • "(?:a)" hedef eşleşir "a", ancak "(?:a) \1" Geçersiz yakalama grubu 1 yok çünkü.

  • "(?=a) bir" hedef eşleşir "a". İlk sıra pozitif assert eşleşen "a" hedef sıra ve en son "a" normal ifadenin eşleşen ilk sırayı "a" hedef sırada.

  • "(?!bir) bir "hedef sıra eşleşmiyor"a".

  • "a\b." eşleşen hedef sırası "bir ~", "ab" hedef sırası eşleşmez.

  • "a\B." "ab" hedef sırası ile eşleşir, ancak hedef sıra eşleşmiyor "bir ~".

De awk, öğenin ayrıca aşağıdaki şeyden biri olabilir:

  • A Dosya biçimi çıkış , form "\\", "\a", "\b", "\f", "\n", "\r", "\t" veya "\v". Bunlar bir ters eğik çizgi, uyarı, Geri Al, form besleme, yeni satır, başı, yatay ve dikey sekmelerinde, sırasıyla, hedef sıra ile eşleşir.

  • Bir sekizlik kaçış dizisi formunun "\ooo". Eşleşen bir karakter, temsili bir, iki veya üç sekizli sayı tarafından temsil edilen değer hedef sırayı ooo.

Bb982727.collapse_all(tr-tr,VS.110).gifYineleme

Dışında herhangi bir öğe bir pozitif onaylama, bir negatif onaylama, ya da bir bağlantı yineleme sayısına göre izlenebilir. En genel yineleme sayısı türünü biçimini alır "{min,max}", veya "\ {min,max\}", BRE ve grep. Yineleme sayısı bu form tarafından izlenen bir öğe eşleşen en az min art arda oluşum ve Hayır daha max öğe eşleşen serisine art arda oluşum. Örneğin, "{2,3}" hedef dizisi "aa" ve "aaa" hedef sıra eşleşir, ancak hedef sıra "a" veya hedef sırası "aaaa".

Yineleme sayısı da aşağıdaki biçimlerden birini alabilir:

  • "{min}", or "\{min\}" in BRE and grep. Equivalent to "{min,min}".

  • "{min,}", or "\{min,\}" in BRE and grep. Eşdeğer "{min, sınırlandırılmamış}".

  • "*". "{0, Sınırlandırılmamış}" denktir.

Örnekler:

  • "{2}" "a" veya hedef sırası "aaa" hedef sırası "aa" ancak hedef sırası eşleşmez.

  • "a {2}" hedef sırası "aa", "aaa" hedef sıra ve benzeri ile eşleşir, ancak hedef sıra eşleşmiyor "a".

  • "bir *" hedef eşleşir "", hedef sıra "a", hedef sıra "aa" ve benzeri.

Tüm aynı için BRE ve grep, yineleme sayısı da aşağıdaki biçimlerden birini alabilir:

  • "?". "{0,1}" Eşdeğer.

  • "+". "{1, Sınırlandırılmamış}" denktir.

Örnekler:

  • "a?" eşleşen hedef sırası "" Hedef sırasının "a" ancak hedef sıra "aa" değil.

  • "a +" eşleşen hedef sırası "a", hedef sıra "aa" ve benzeri, ancak hedef sırası "".

İçinde ECMAScript, karakter yineleme sayısı tüm formları izlenebilir '?', hangi atayan bir doyumsuz yineleme.

Bb982727.collapse_all(tr-tr,VS.110).gifBitiştirme

Normal ifade öğeleri içeren veya içermeyen yineleme sayar, form uzun normal ifadeleri art arda eklenebilir. Sonuçta elde edilen deyim, tek tek öğeleri tarafından eşleştirilir sıraları yapıdır bir hedef sırası ile eşleşir. Örneğin, "a {2,3} b" hedef dizisi "aab" ve "aaab" hedef sırası ile eşleşir, ancak hedef sırası "ab" veya "aaaab" hedef sırası ile eşleşmiyor.

Bb982727.collapse_all(tr-tr,VS.110).gifDeğişim

Tüm normal ifade aynı dışında BRE ve grep, art arda eklenmiş bir normal ifade tarafından karakter izlenebilir ' |' ve diğer normal ifade birleştirilmiş. Art arda eklenmiş normal ifadeler herhangi bir sayıda bu şekilde birleştirilebilir. Sonuçta elde edilen deyim, bir veya daha fazlasını art arda eklenmiş normal ifadeler ile eşleşen herhangi bir hedef sıra eşleşir.

Art arda eklenmiş normal ifadelerin birden fazla hedef sıra eşleştiğinde ECMAScript eşleşme olarak sıra ile eşleşen ilk art arda eklenmiş normal ifadelerin seçer (ilk eşleşen); diğer normal ifade aynı erişir seçilecek eşleşen en uzun. Örneğin, "ab|cd" hedef dizisi "ab" ve "cd" hedef sırası ile eşleşir, ancak hedef sırası "abd" veya "acd" hedef sırası ile eşleşmiyor.

De grep ve egrep, yeni satır karakteri ('\n') alternations ayırmak için kullanılır.

Bb982727.collapse_all(tr-tr,VS.110).gifAlt ifadeyi

De BRE ve grep, bir alt ifadeyi bir yapıdır. Diğer normal ifade aynı içinde bir alt ifadeyi bir değişim olur.

Dilbilgisi özeti

TR1 tarafından sağlanan çeşitli normal ifade aynı kullanılabilir özellikleri aşağıdaki tabloda özetlenmiştir:

Öge

BRE

NEREDE GÖRÜNECEK

ECMA

GREP

egrep

awk

Değişim kullanarak ' |'

+

+

+

+

Değişim '\n' kullanma

+

+

çapa

+

+

+

+

+

+

başvuru geri

+

+

+

ayraç ifadesi

+

+

+

+

+

+

yakalama grubunu kullanarak "()"

+

+

+

+

yakalama grubunu kullanarak "\ (\)"

+

+

Denetim kaçış dizisi

+

dsw karakteri kaçış

+

dosya biçimi kaçış

+

+

onaltılık kaçış dizisi

+

kimlik kaçış

+

+

+

+

+

+

negatif onaylama işlemi

+

negatif sözcük sınırı onaylama işlemi

+

Yakalama Grup

+

doyumsuz yineleme

+

sekizlik kaçış dizisi

+

sıradan bir karakter

+

+

+

+

+

+

pozitif onaylama işlemi

+

"{}" kullanarak yineleme

+

+

+

+

yineleme kullanarak "\ {\}"

+

+

yineleme kullanarak ' *'

+

+

+

+

+

+

yineleme kullanarak '?' ve '+'

+

+

+

+

Unicode kaçış dizisi

+

joker karakter

+

+

+

+

+

+

sözcük sınırı onaylama işlemi

+

Anlamsal ayrıntıları

Bb982727.collapse_all(tr-tr,VS.110).gifÇapa

Tutturucu bir dizedeki hedef, bir karakter ile eşleşir. A ' ^' hedef dize başlangıcı ile eşleşir ve '$' hedef dize sonu ile eşleşir.

Bb982727.collapse_all(tr-tr,VS.110).gifBaşvuru geri

Ondalık değer n ve ardından bir ters eğik çizgi geri başvurudur N. dereceden içeriğini eşleşen Grup yakalama. n değerini geri başvurusundan önce geldiğine yakalama gruplarını sayıdan fazla olmamalıdır. De BRE ve grep, ters eğik çizgi izleyen ondalık basamak n değeri belirlenir. De ECMAScript, n değeri hemen ters eğik çizgi izleyen tüm ondalık basamak tarafından belirlenir. Bu nedenle de BRE ve grep, normal ifade dokuzdan fazla yakalama gruplarını olsa bile n değeri hiçbir zaman birden fazla 9'dur. De ECMAScript, n değeri unbounded'dır.

Örnekler:

  • "((a+) (b +))(c+) \3", "aabbbcbbb" hedef sıra eşleşir. "\3" Geri başvuru grubunda üçüncü yakalama, yani "(b+) metinle eşleşen". "Aabbbcbb" hedef sıra eşleşmiyor.

  • "\2 (a)" geçerli değil.

  • "(b (((((((((a)))))))))) \10" olan farklı anlamlar BRE ve ECMAScript. De BRE "\1" geri başvurudur. İlk yakalama grubun içeriğini geri başvuru eşleşir (diğer bir deyişle "(b" ile başlayan ve final ile biten bir ")" ve geri başvuru önce gelir), ve son ' 0 'eşleşen normal karakter ' 0'. De ECMAScript, "\10" geri başvurudur. Onu onuncu yakalama grubu, diğer bir deyişle, en içteki biri ile eşleşir.

Bb982727.collapse_all(tr-tr,VS.110).gifAyraç ifadesi

Bir parantez ifadesi karakter kümesini tanımlar ve öğeleri harmanlama. Ayraç ifadeyi karakteriyle başlayacağı ' ^' hedef sırada geçerli karakter kümesindeki hiçbir öğe eşleşiyorsa eşleşme başarılı. Hedef sıra geçerli karakter kümesi içindeki öðelerin herhangi biri eşleşiyorsa, aksi takdirde eşleşme başarılı olur.

Karakter kümesi herhangi bir bileşimini listeleyerek tanımlanabilir tek tek karakterleri, karakter aralıkları, karakter sınıfları, eşdeğerlik sınıfları, ve sembolleri harmanlama.

Bb982727.collapse_all(tr-tr,VS.110).gifYakalama grubu

Bir yakalama grubunu içeriğinin normal ifade dilbilgisi içinde tek bir birim olarak işaretler ve içeriğinin eşleşen hedef metin etiketleri. Her yakalama grubuyla ilişkilendirilmiş olan etiketi sayılarak işaretlemek açılış parantez grupları kadar yakalamak ve açma parantezi dahil olmak üzere, geçerli yakalama grubunu işaretler belirlenir bir sayı olur. Bu uygulama, yakalama gruplarını sayısı 31'dir.

Örnekler:

  • "ab +" hedef sırası "abb" ile eşleşir, ancak "abab" hedef sırası ile eşleşmiyor.

  • "(ab) +" "abb" hedef sırası eşleşmez, ancak hedef sırası "abab" ile eşleşir.

  • "((a+)(b+))(c+)" matches the target sequence "aabbbc" and associates capture group 1 with the subsequence "aabbb", capture group 2 with the subsequence "aa", capture group 3 with "bbb", and capture group 4 with the subsequence "c".

Bb982727.collapse_all(tr-tr,VS.110).gifKarakter sınıfı

Ayraç ifadesi karakter sınıfında tüm karakterleri köşeli ayraç deyim tarafından tanımlanan karakter kümesi adlandırılmış sınıfında ekler. Karakter sınıfı oluşturmak için kullanın "[:" ":" tarafından ve ardından sınıfın adını arkasından. Karakter sınıfları adlarını çağırarak dahili olarak tanınan id = traits.lookup_classname. Bir karakter ch , bu tür bir sınıfa ait traits.isctype(ch, id) true değerini döndürür. Varsayılan regex_traits şablonu aşağıdaki tabloda sınıf adları destekler.

Sınıf adı

Description

"alnum"

küçük harfler, büyük harfler ve rakamlar

"alfa"

küçük harf ve büyük harf

"boş"

boşluk veya sekme

"cntrl"

Dosya biçimi çıkış karakter

"rakam"

basamak

"Grafik"

küçük harfler, büyük harfler, rakamlar ve noktalama

"Düşük"

küçük harfler

"Yazdır"

küçük harfler, büyük harfler, rakamlar, noktalama ve boşluk

"işaret"

noktalama işaretleri

"boşluk"

boşluk

"üst

büyük harf karakterler

"xdigit"

basamak, 'a', 'b', 'c' olur ', 'e', 'f', 'a', 'b', 'c','ı 'd', 'e', 'f'

"d"

aynı rakam

"s"

Alanınızla aynı olacak

"w"

aynı alnum

Bb982727.collapse_all(tr-tr,VS.110).gifKarakter aralığı

Ayraç ifadesi karakter aralığında tüm karakterler aralığındaki ayraç deyim tarafından tanımlanan karakter kümesi ekler. Bir karakter aralığı oluşturmak için karakter koymak '-' aralıktaki ilk ve son karakterler arasında. Böylece daha çok veya ilk karakteri sayısal değerine eşit ve daha az son karakterinin sayısal değere eşit veya sayısal bir değeri olan tüm karakter kümesi koyar. Bu eklenen karakter kümesini karakter platforma özel gösterimini etkileyen dikkat edin. Karakter '-' oluşur başında veya bitiş parantezi ifade veya karakter aralığının ilk veya son karakteri olarak kendisini göstereceğini.

Örnekler:

  • "[0-7]" {'0', '1', '2', '3', '4', ' 5', ' 6', ' 7'} karakter kümesini temsil eder. Hedef ile eşleşen serileri "0", "1" ve benzeri, ancak "a".

  • "[K h]" karakter kümesini temsil eder, ASCII kullanan sistemlerde karakter kodlaması {'h', 'i', 'j', 'k'}. "H" hedef sıralarının eşleşir "i" ve benzeri, ancak değil "\x8A" veya "0".

  • EBCDIC kullanan sistemlerde karakter kodlaması, "[k h]" karakter kümesini temsil eden {'h', 'i', '\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F', '\x90', 'j', 'k'} ('h' 0x88 kodlanmış ve 'k' 0x92 kodlanmış). Hedef sıraları "h" ile eşleşir "i", "\x8A" ve benzeri, ancak "0" değil.

  • "[- 0 - 24]" karakter kümesini temsil eden {'-', '0', '1', ' 2', ' 4'}.

  • "[0 - 2-]" karakter kümesini temsil eden {'0', '1', '2', '-'}.

  • ASCII karakter kodlamasını kullanacak, "[+--]" karakter kümesini temsil eden sistemlerde {'+ ',',', '-'}.

Ancak, yerel ayar duyarlı aralıkları kullanıldığında, bir aralıktaki karakter yerel ayar harmanlama kuralları tarafından belirlenir. İlk karakter aralığı ve önceki son karakter aralığı tanımındaki tanımında sonra harmanlama karakter kümesinde olmayan. İki uç da kümesinde karakterlerdir.

Bb982727.collapse_all(tr-tr,VS.110).gifHarmanlama öğesi

Tek bir karakter olarak kabul multi-character bir sıra bir harmanlama öğedir.

Bb982727.collapse_all(tr-tr,VS.110).gifHarmanlama simgesi

Ayraç ifade harmanlama sembol ekler bir harmanlama öğesi ayraç deyim tarafından tanımlanan kümesi. Harmanlama bir sembol oluşturmak için kullanın "[." "." tarafından izlenen harmanlama öğesi arkasından.

Bb982727.collapse_all(tr-tr,VS.110).gifDenetim kaçış dizisi

Denetim çıkış sırasını ters eğik çizgi harflerinden birini ve ardından'c ' harfi 'a' ile 'z' veya 'Bir'-'z' arkasından ' dir. Bunu, o harfe göre adlı ASCII denetim karakteri ile eşleşir. Örneğin, "\ci" hedef "\x09", çünkü eşleşir < ctrl-i > 0x09 değerine sahiptir.

Bb982727.collapse_all(tr-tr,VS.110).gifdsw karakteri kaçış

Dsw karakteri kaçış kısa bir karakter sınıfı aşağıdaki tabloda gösterildiği gibi adıdır.

Çıkış sırası

Sınıf adlı eşdeğeri

Sınıf adlı varsayılan

"\d"

"[[:d:]]"

"[[: basamak:]]"

"\D"

"[^[:d:]]"

"[^ [: basamak:]]"

"\s"

"[[:s:]]"

"[[: boş alan:]]"

"\S"

"[^[:s:]]"

"[^ [: boş alan:]]"

"\w"

"[[:w:]]"

"[a-zA-Z0-9_]" *

"\W"

"[^[:w:]]"

"[^ a-zA-Z0-9_]" *

* ASCII karakter kümesi

Bb982727.collapse_all(tr-tr,VS.110).gifEşdeğerlik sınıfı

Tüm karakterleri köşeli ayraç ifadeyi eşdeğerlik sınıfında ekler ve öğeleri harmanlama harmanlama öğesi eşdeğerlik sınıf tanımında ayraç deyim tarafından tanımlanan kümesine denktir. Eşdeğerlik sınıfı oluşturmak için kullanın "[=" arkasından bir harmanlama öğesi arkasından "=]". Dahili olarak, iki harmanlama öğeleri elt1 ve elt2 eşdeğerdir, traits.transform_primary(elt1.begin(), elt1.end()) == traits.transform_primary(elt2.begin(), elt2.end()).

Bb982727.collapse_all(tr-tr,VS.110).gifDosya biçimi kaçış

Normal c dili karakter çıkış sıralarını, "\\", "\a", "\b", "\f", "\n", "\r", "\t", "\v" bir dosya biçimi kaçış oluşur.Bunlar sırasıyla, yani ters eğik çizgi, uyarı, geri, form besleme, yeni satır, başı, yatay ve dikey sekmelerinde, her zamanki gibi anlamları vardır. De ECMAScript, "\a" ve "\b" izin verilmez. ("\\" izin verilir, ancak bir kimlik çıkış dosyası biçimi kaçış olur).

Bb982727.collapse_all(tr-tr,VS.110).gifOnaltılık kaçış dizisi

Onaltılık çıkış sırası iki onaltılık basamak (0-9a-fA-f) ile izlenen'x ' harfi ve ardından bir ters eğik çizgi olur. Bu iki basamak ile belirtilen değere sahip hedef sırada bir karakterle eşleşir. Örneğin, ASCII karakter kodlaması kullanıldığında, hedef sıra "a" "\x41" ile eşleşir.

Bb982727.collapse_all(tr-tr,VS.110).gifKimlik kaçış

Kimlik çıkış sonrasında tek bir karakteri ters eğik çizgi olur. Bunu, o karakteri ile eşleşir. Karakter, özel bir anlamı olduğunda gereklidir; kimlik Çıkış'ı kullanarak, özel anlamı kaldırılır. Örne?in:

  • "bir *" hedef sırası "aaa" ile eşleşir, ancak hedef sıra eşleşmiyor "bir *".

  • "a\ *" "aaa" hedef sırası eşleşmez, ancak eşleşen hedef sırası "bir *".

Bir kimlik escape içinde izin verilen karakter kümesini aşağıdaki tabloda gösterildiği gibi normal ifade dilbilgisi bağlıdır.

Dilbilgisi

Kimlik değiştirme karakterlerini izin

BRE, grep

{ '(', ')', '{', '}', '.', '[', '\', '*', '^', '$' }

ERE, egre

{ '(', ')', '{', '.', '[', '\', '*', '^', '$', '+', '?', '|' }

awk

EREartı {' "', '/'}

ECMAScript

Tüm karakterler dışında tanımlayıcı bir parçası olabilir. Genellikle, harfler, rakamlar, '$', '_' ve unicode kaçış sıraları içerir. Daha fazla bilgi için bkz: ECMAScript dil belirtimi.

Bb982727.collapse_all(tr-tr,VS.110).gifTek tek karakter

Bağımsız bir karakter bir ayraç ifadesinde bu karakteri ayraç deyim tarafından tanımlanan karakter kümesine ekler. Başında, bir ayraç ifadesi dışında herhangi bir yerindeki bir ' ^' kendisini temsil eder.

Örnekler:

  • "[abc]" eşleşen hedef sıraları "a", "b" ve "c" ancak sıra değil "d".

  • "[^ abc]" hedef sırası "d", ancak hedef sıralarının eşleştirir, "a", "b" veya "c".

  • "[bir ^ bc]" Hedef sıraları, "a", "b", "c" ile eşleşir ve "^", ancak hedef sıra "d" değil.

Tüm normal ifade aynı dışında ECMAScript, bir ']' açılışı izleyen ilk karakteri ' [' veya bir başlangıç izleyen ilk karakterin ' ^', kendisini temsil eder.

Örnekler:

  • "[] bir" olmadığından geçersiz yok ']' köşeli ayraç ifadesini sonlandırmak için.

  • "a", "b", "c", "[abc]]" eşleşen hedef sıraları ve "]", ancak hedef sıra "d" değil.

  • "^ abc]", "a", "b", "c", "d" hedef sıra, ancak hedef sıralarının eşleşen veya "]".

De ECMAScript, kullanın ' \]' karakteri göstermek için ']' bir ayraç ifadesinde.

Örnekler:

  • "[] bir" hedef eşleşir "a" ayraç ifadesi boş olduğundan.

  • "[\]abc]" ile eşleşen hedef sıraları "a", "b", "c" ve "]" ancak hedef sıra "d" değil.

Bb982727.collapse_all(tr-tr,VS.110).gifNegatif onaylama işlemi

Negatif assert içeriğinin ancak herhangi bir şey ile eşleşir. Hedef sıra herhangi bir karakter tüketmez. Örneğin, "(?!.aa)(a*) "hedef eşleşir"a"associates ile subsequence Grup 1 yakalamak ve"a". Hedef sıra "aa" veya "aaa" hedef sıra eşleşmiyor.

Bb982727.collapse_all(tr-tr,VS.110).gifNegatif sözcük sınırına onaylama işlemi

Hemen sonra hedef dizedeki geçerli değil ise negatif sözcük sınırı assert eşleşen bir sözcük sınırına.

Bb982727.collapse_all(tr-tr,VS.110).gifGrup yakalama

Yakalama Grup içeriğinin normal ifade dilbilgisi içinde tek bir birim olarak işaretler, ancak hedef metin etiketi yok. Örneğin, "(associates ile subsequence Grup 1 yakalamak ve a)(?:b)*(c) eşleşen hedef metin"abbc""a"ve Grup 2 subsequence"c"ile yakalayın.

Bb982727.collapse_all(tr-tr,VS.110).gifDoyumsuz yineleme

Doyumsuz olmayan bir Yineleme deseni eşleştirir hedef sırasının en kısa subsequence tüketir. Doyumsuz bir yineleme operasyonunun tüketir. Örneğin "(a+)(a*b)" hedef sırası "aaab" eşleşir. Doyumsuz olmayan bir yineleme kullanıldığında, 1 yakalama grubunu ilişkilendirir subsequence ile "a" hedef başında sıra ve Grup 2 subsequence hedef sırasının sonunda "aab" ile yakalayın. Doyumsuz eşleşme kullanıldığında, subsequence "b" subsequence "aaa" ve yakalama grubuyla 2 1 yakalama grubunu ilişkilendirir.

Bb982727.collapse_all(tr-tr,VS.110).gifSekizlik kaçış dizisi

Sekizlik kaçış dizisi bir, iki ya da üç sekizli basamak (0-7) ve ardından bir ters eğik çizgi olur. Bu basamakları tarafından belirtilen değere sahip hedef sırada bir eşleşir. Tüm rakamları '0', sıra geçersiz. Örneğin, ASCII karakter kodlaması kullanıldığında, hedef sıra "a" "\101" ile eşleşir.

Bb982727.collapse_all(tr-tr,VS.110).gifSıradan bir karakter

Sıradan bir karakter geçerli dilbilgisi içinde özel bir anlamı olmayan geçerli herhangi bir karakterdir.

De ECMAScript, aşağıdaki karakterlerin özel anlamları vardır:

  • ^ $ \ . * + ? ( ) [ ] { } |

De BRE ve grep, aşağıdaki karakterlerin özel anlamları vardır:

  • . [ \

Ayrıca, BRE ve grep, belirli bir bağlamda kullanıldığında aşağıdaki karakterleri özel anlamları vardır:

  • ' *' normal ifadede ilk karakteri veya bir başlangıç izleyen ilk karakterin olduğunda dışındaki tüm durumlarda özel bir anlamı olan ' ^' normal bir ifade veya bir yakalama grubunu ilk karakteri veya bir başlangıç izleyen ilk karakterin olduğunda ' ^' yakalama grubunda.

  • ' ^' normal ifadenin ilk karakter olduğunda özel bir anlamı vardır.

  • normal ifadenin son karakter olduğunda '$' özel bir anlamı vardır.

De ERE, egrep, ve awk, aşağıdaki karakterlerin özel anlamları vardır:

  • . [ \ ( * + ? { |

Ayrıca, ERE, egrep, ve awk, belirli bir bağlamda kullanıldığında aşağıdaki karakterleri özel anlamları vardır.

  • ')' da eşleştiğinde önceki '('. özel bir anlamı vardır

  • ' ^' normal ifadenin ilk karakter olduğunda özel bir anlamı vardır.

  • normal ifadenin son karakter olduğunda '$' özel bir anlamı vardır.

Sıradan bir karakter hedef sıra aynı karakterle eşleşir. Varsayılan olarak, bu iki karakter aynı değeri temsil ediliyorsa, başarılı eşleşme anlamına gelir. Büyük küçük harf duyarlı eşleme, iki karakter ch0 ve ch1 aynı traits.translate_nocase(ch0) == traits.translate_nocase(ch1). Yerel ayar duyarlı eşleme, iki karakter ch0 ve ch1 aynı traits.translate(ch0) == traits.translate(ch1).

Bb982727.collapse_all(tr-tr,VS.110).gifPozitif onaylama işlemi

Pozitif assert içeriği ile eşleşir, ancak herhangi bir karakteri hedef sıra tüketmez.

Örnekler:

  • "(? aa)(a*) ="hedef sırası "aaaa" ile eşleşir ve yakalama grubu 1 "aaaa" subsequence ile ilişkilendirir.

  • "(aa)(a*)" MATCHES the target sequence "AAAA" and Associates Capture Group 1 with the subsequence "aa" at the beginning of the target sequence and Capture Group 2 with the subsequence "aa" at the End of the target sequence.

  • "(?=aa) (a) |(a) "hedef eşleşir"a"ve associates (pozitif onaylama işlemi başarısız oldu çünkü) Grup 1 boş bir sıra ile yakalayın ve Grup 2 ile subsequence yakalama"a". Ayrıca, hedef sıra "aa" ile eşleşir ve yakalama Grup 1 subsequence "aa" ve yakalama grubunun 2 boş bir sıra ile ilişkilendirir.

Bb982727.collapse_all(tr-tr,VS.110).gifUnicode kaçış dizisi

Unicode kaçış dizisi dört onaltılı basamak (0-9a-fA-f) tarafından izlenen'u ' harfi ve ardından bir ters eğik çizgi olur. Bu dört haneli olarak belirtilen değere sahip hedef sırada bir karakterle eşleşir. Örneğin, ASCII karakter kodlaması kullanıldığında, hedef sıra "a" "\u0041" ile eşleşir.

Bb982727.collapse_all(tr-tr,VS.110).gifJoker karakter

Bir joker karakteri hedef ifadede bir yeni satır dışında herhangi bir karakterle eşleşir.

Bb982727.collapse_all(tr-tr,VS.110).gifSözcük sınırı

Bir sözcük sınırına aşağıdaki durumlarda oluşur:

  • Geçerli karakteri hedef sıranın başında, word karakterlerden biri iseA-Za-z0-9_.

  • Hedef sıra sonunun geçerli karakterin konumudur ve hedef sıra son karakter sözcük karakterlerini biridir.

  • Geçerli karakteri sözcük karakterlerini biridir ve önceki karakteri değil.

  • Geçerli karakter word karakterlerden biri değildir ve önceki karakterdir.

Bb982727.collapse_all(tr-tr,VS.110).gifSözcük sınırı onaylama işlemi

Hemen sonra hedef dizedeki geçerli olduğunda, word sınır assert eşleşen bir sözcük sınırına.

Arama ve eşleştirme

Hedef sırasıyla eşleşmesi için normal bir ifade için tüm hedef sırası tüm düzenli ifade eşleşmesi gerekir. Örneğin, normal ifade "bcd" hedef sırası "bcd" ile eşleşir ancak hedef sırası "abcd" veya "bcde" hedef sırası ile eşleşmiyor.

Bir düzenli ifade arama başarılı olması olması gerekir bir subsequence yerlerde normal ifadenin eşleşen hedef sırada. Arama, genellikle en soldaki eşleşen subsequence bulur.

Örnekler:

  • Hedef sıra "bcd" normal ifadede "bcd" için arama başarılı ve sıranın tamamını eşleştirir. Hedef sıra "abcd" aynı arama başarılı ve son üç karakteri ile eşleşir. Hedef sıra "bcde" aynı arama başarılı ve ilk üç karakteri ile eşleşir.

  • Hedef sıra "bcdbcd" normal ifadede "bcd" için arama başarılı ve ilk üç karakteri ile eşleşir.

Hedef sıra bazı konumdaki eşleşen birden fazla subsequence ise, eşleşen desen seçmek için iki yol vardır. İlk eşleşen normal ifadenin eşleşen ilk bulundu, subsequence seçer. En uzun eşleşen o konumda eşleşmesi olanlar arasında en uzun subsequence seçer. Maximal uzunlukta birden fazla subsequence ise en uzun eşleşme bulundu önce bir seçer. Örneğin, ilk eşleşme kullanıldığında, sol, değişim, subsequence terimini içerdiğinden normal ifade hedef sırası "abcd" "b|bc" için bir arama "b" subsequence bulur; Bu nedenle, ilk eşleşme değişim sağ taraftaki koşulunun denemez. En uzun eşleşme kullanıldığında, "bc", "b" uzun olduğu için aynı arama "bc" ile eşleşir.

Bile, normal ifade doldurdu değil eşleşme hedef sıranın sonuna başarısız olmadan ulaşırsa kısmi eşleşme başarılı olur. Bu nedenle, kısmi eşleşme başarılı olduktan sonra hedef sıra karakter ekleme sonraki kısmi eşleşme başarısız olmasına neden olabilir. Ancak, kısmi bir eşleştirme başarısız olduktan sonra hedef sıra için karakter ekleme başarılı olması bir sonraki kısmi eşleşme neden olamaz. Örneğin, "ab" hedef sıra kısmi bir eşleşme ile eşleşir "a" ancak değil "ac".

Biçimlendirme işaretleri

ECMAScript biçim kuralları

sed biçim kuralları

Değiştirme metni

"$ &"

"&"

Tüm normal ifadenin eşleşen karakter sırası ([match[0].first, match[0].second))

"$$"

"$"

 

"\ &"

"&"

"$'" (dolar işareti ve ardından tarafından geri teklifi)

 

Normal ifadenin eşleşen subsequence önündeki karakter sırası ([match.prefix().first, match.prefix().second))

"$'" (dolar işareti ve ardından tarafından ileriye doğru teklifi)

 

Normal ifadenin eşleşen subsequence izleyen karakter sırası ([match.suffix().first, match.suffix().second))

"$ n"

"\n"

Yakalama grubu konumundaki eşleşen karakter sırası n, n 0-9 () arasında bir sayı[match[n].first, match[n].second)

 

"\\n"

"\n"

"$ nn"

 

Yakalama grubu konumundaki eşleşen karakter sırası nn, nn () 10 ile 99 arasında bir sayı[match[nn].first, match[nn].second)

Ayrıca bkz.

Başvuru

Standart C++ Kitaplığı genel bakış