GruplarFlash Player 9 ve üstü, Adobe AIR 1.0 ve üstü Aşağıdaki gibi, parantezleri kullanarak normal ifadede bir grup belirtebilirsiniz: /class-(\d*)/ Grup, bir desenin alt bölümüdür. Şunları yapmak için grupları kullanabilirsiniz:
İlerleyen bölümlerde, grupların bu kullanımlarıyla ilgili ayrıntılar sağlanmaktadır. Nicelik belirteçleriyle grupları kullanmaBir grup kullanmazsanız, aşağıda gösterildiği gibi, nicelik belirteci kendisinden önceki karakter veya karakter sınıfı için geçerli olur: var pattern:RegExp = /ab*/ ; // matches the character a followed by // zero or more occurrences of the character b pattern = /a\d+/; // matches the character a followed by // one or more digits pattern = /a[123]{1,3}/; // matches the character a followed by // one to three occurrences of either 1, 2, or 3 Ancak, birden çok karakter veya karakter sınıfına nicelik belirteci uygulamak için bir grup kullanabilirsiniz: var pattern:RegExp = /(ab)*/; // matches zero or more occurrences of the character a // followed by the character b, such as ababab pattern = /(a\d)+/; // matches one or more occurrences of the character a followed by // a digit, such as a1a5a8a3 pattern = /(spam ){1,3}/; // matches 1 to 3 occurrences of the word spam followed by a space Nicelik belirteçleri hakkında daha fazla bilgi için, bkz. Nicelik belirteçleri. Değiştirici (|) karakteriyle grupları kullanmaAşağıdaki gibi, değiştirici (|) karakteri uygulamak istediğiniz karakterler grubunu tanımlamak için grupları kullanabilirsiniz: var pattern:RegExp = /cat|dog/; // matches cat or dog pattern = /ca(t|d)og/; // matches catog or cadog Alt dize eşleşmelerini yakalamak için grupları kullanmaBir desende standart bir parantez grubu tanımladığınızda, daha sonra normal ifadede bu gruba başvurabilirsiniz. Bu, geribaşvuru olarak bilinir ve bu tür gruplar da yakalama grupları olarak adlandırılır. Örneğin, aşağıdaki normal ifadede \1 sırası, yakalama parantez grubunun eşleştiği tüm alt dizelerle eşleşir: var pattern:RegExp = /(\d+)-by-\1/; // matches the following: 48-by-48 \1, \2, ... , \99 yazarak normal ifadede bu geribaşvuruların en fazla 99 tanesini belirtebilirsiniz. Aynı şekilde, String sınıfının replace() yönteminde, yerini alan dizeye yakalanan grup alt dizesi eşleşmelerini eklemek için $1$99 öğesini kullanabilirsiniz: var pattern:RegExp = /Hi, (\w+)\./; var str:String = "Hi, Bob."; trace(str.replace(pattern, "$1, hello.")); // output: Bob, hello. Ayrıca, yakalama gruplarını kullanırsanız, RegExp sınıfının exec() yöntemi ve String sınıfının match() yöntemi, yakalama gruplarıyla eşleşen alt dizeleri döndürür: var pattern:RegExp = /(\w+)@(\w+).(\w+)/; var str:String = "bob@example.com"; trace(pattern.exec(str)); // bob@example.com,bob,example,com Yakalama yapmayan grupları ve ileri yönlü grupları kullanmaYakalama yapmayan grup, yalnızca gruplandırma için kullanılır; "toplanmaz" ve numaralandırılmış geribaşvurularla eşleşmez. Yakalama yapmayan grupları tanımlamak için şu şekilde (?: ve ) öğelerini kullanın: var pattern = /(?:com|org|net); Örneğin, bir yakalama grubuna ve yakalama yapmayan gruba (com|org) öğesinin koyulması arasındaki farka dikkat edin (exec() yöntemi, tam eşleşmeden sonra yakalama gruplarını listeler): var pattern:RegExp = /(\w+)@(\w+).(com|org)/; var str:String = "bob@example.com"; trace(pattern.exec(str)); // bob@example.com,bob,example,com //noncapturing: var pattern:RegExp = /(\w+)@(\w+).(?:com|org)/; var str:String = "bob@example.com"; trace(pattern.exec(str)); // bob@example.com,bob,example Yakalama yapmayan grubun özel bir türü ileri yönlü grup olup bunun da iki türü vardır: pozitif ileri yönlü grup ve negatif ileri yönlü grup. Gruptaki alt desenin konumda eşleşmesi gerektiğini belirten bir pozitif ileri yönlü grup tanımlamak için (?= ve ) öğelerini kullanın. Ancak, dizenin pozitif ileri yönlü grupla eşleşen kısmı, normal ifadede kalan diğer desenlerle eşleşebilir. Örneğin, aşağıdaki kodda (?=e) bir pozitif ileri yönlü grup olduğundan, bunun eşleştiği e karakteri, normal ifadenin sonraki kısmıyla da (bu durumda yakalama grubu, \w*)) eşleşebilir: var pattern:RegExp = /sh(?=e)(\w*)/i; var str:String = "Shelly sells seashells by the seashore"; trace(pattern.exec(str)); // Shelly,elly Gruptaki alt desenin konumda eşleşmemesi gerektiğini belirten bir negatif ileri yönlü grup tanımlamak için, (?! ve ) öğelerini kullanın. Örneğin: var pattern:RegExp = /sh(?!e)(\w*)/i; var str:String = "She sells seashells by the seashore"; trace(pattern.exec(str)); // shore,ore Adlandırılmış grupları kullanmaAdlandırılmış grup, normal ifadede, adlandırılmış bir tanımlayıcı verilmiş grup türüdür. Adlandırılmış grubu tanımlamak için, (?P<name> ve ) öğelerini kullanın. Örneğin, aşağıdaki normal ifade, digits adında tanımlayıcıyla adlandırılmış bir grup içerir: var pattern = /[a-z]+(?P<digits>\d+)[a-z]+/; exec() yöntemini kullandığınızda, eşleşen ada sahip bir grup result dizisinin bir özelliği olarak eklenir: var myPattern:RegExp = /([a-z]+)(?P<digits>\d+)[a-z]+/; var str:String = "a123bcd"; var result:Array = myPattern.exec(str); trace(result.digits); // 123 Aşağıda, name ve dom tanımlayıcılarıyla, adlandırılmış iki grup kullanan başka bir örnek verilmiştir: var emailPattern:RegExp = /(?P<name>(\w|[_.\-])+)@(?P<dom>((\w|-)+))+\.\w{2,4}+/; var address:String = "bob@example.com"; var result:Array = emailPattern.exec(address); trace(result.name); // bob trace(result.dom); // example Not: Adlandırılmış gruplar, ECMAScript dil belirtiminin parçası değildir. Bunlar ActionScript 3.0'a eklenen bir özelliktir.
|
|