Skip to content

Commit fe7267b

Browse files
authored
Update article.md
1 parent cbc0261 commit fe7267b

File tree

1 file changed

+47
-48
lines changed
  • 9-regular-expressions/09-regexp-quantifiers

1 file changed

+47
-48
lines changed
Lines changed: 47 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,46 @@
1-
# Quantifiers +, *, ? and {n}
1+
# Nicelik Belirteçleri +, *, ? and {n}
22

3-
Let's say we have a string like `+7(903)-123-45-67` and want to find all numbers in it. But unlike before, we are interested not in single digits, but full numbers: `7, 903, 123, 45, 67`.
3+
Diyelim ki `+7(903)-123-45-67` şeklinde bir karakter dizimiz var ve biz bu dizideki sayıların tamamını bulmak istiyoruz. Ama öncekinden farklı olarak, tek bir sayıyla değil, bütün sayılarla ilgileniyoruz: `7, 903, 123, 45, 67`.
44

5-
A number is a sequence of 1 or more digits `pattern:\d`. To mark how many we need, we can append a *quantifier*.
5+
Sayı, bir veya daha fazla rakamdan oluşan bir dizidir `pattern:\d`. Kaç tanesine sahip olduğumuzu işaretlemek için bir *nicelik belirteci* ekleyebiliriz.
66

7-
## Quantity {n}
7+
## Nicelik {n}
88

9-
The simplest quantifier is a number in curly braces: `pattern:{n}`.
9+
En basit nicelik belirteci, süslü parantezler içindeki bir sayıdır: `pattern:{n}`.
1010

11-
A quantifier is appended to a character (or a character class, or a `[...]` set etc) and specifies how many we need.
11+
Bir karaktere (ya da bir karakter sınıfına, veya `[...]` kümesine vb.) nicelik belirteci eklendiğinde, bize kaç tanesine sahip olduğumuzu belirtir.
1212

13-
It has a few advanced forms, let's see examples:
13+
Birkaç gelişmiş formu var, örneklere bakalım:
1414

15-
The exact count: `pattern:{5}`
16-
: `pattern:\d{5}` denotes exactly 5 digits, the same as `pattern:\d\d\d\d\d`.
15+
Tam sayım: `pattern:{5}`
16+
: `pattern:\d{5}`, `pattern:\d\d\d\d\d` ile benzerdir. İkiside tam olarak 5 adet rakamı belirtir.
1717

18-
The example below looks for a 5-digit number:
18+
Aşağıdaki örnekte 5 basamaklı sayı aranır:
1919

2020
```js run
21-
alert( "I'm 12345 years old".match(/\d{5}/) ); // "12345"
21+
alert( "12345 yaşındayım".match(/\d{5}/) ); // "12345"
2222
```
2323

24-
We can add `\b` to exclude longer numbers: `pattern:\b\d{5}\b`.
24+
Daha uzun sayıları hariç tutmak için `\b` kullanabiliriz: `pattern:\b\d{5}\b`.
2525

26-
The range: `pattern:{3,5}`, match 3-5 times
27-
: To find numbers from 3 to 5 digits we can put the limits into curly braces: `pattern:\d{3,5}`
26+
`pattern:{3,5}`, 3 ila 5 aralığında eşleştirir
27+
: 3 ila 5 basamaklı sayıları bulmak için sınırları süslü parantezlerin içinde belirtebiliriz: `pattern:\d{3,5}`
2828

2929
```js run
30-
alert( "I'm not 12, but 1234 years old".match(/\d{3,5}/) ); // "1234"
30+
alert( "12 yaşında değilim, 1234 yaşındayım.".match(/\d{3,5}/) ); // "1234"
3131
```
3232

33-
We can omit the upper limit.
33+
Üst sınırı kaldırabiliriz.
3434

35-
Then a regexp `pattern:\d{3,}` looks for sequences of digits of length `3` or more:
35+
`pattern:\d{3,}`, `3` veya daha fazla basamaklı sayıları arar:
3636

3737
```js run
38-
alert( "I'm not 12, but 345678 years old".match(/\d{3,}/) ); // "345678"
38+
alert( "12 yaşında değilim, 345678 yaşındayım".match(/\d{3,}/) ); // "345678"
3939
```
4040

41-
Let's return to the string `+7(903)-123-45-67`.
41+
Şimdi `+7(903)-123-45-67` değerine dönelim.
4242

43-
A number is a sequence of one or more digits in a row. So the regexp is `pattern:\d{1,}`:
43+
Sayı, arka arkaya bir veya daha fazla rakamdan oluşan bir dizidir. Yani düzenli ifade (regexp) şu şekilde olacaktır, `pattern:\d{1,}`:
4444

4545
```js run
4646
let str = "+7(903)-123-45-67";
@@ -50,14 +50,14 @@ let numbers = str.match(/\d{1,}/g);
5050
alert(numbers); // 7,903,123,45,67
5151
```
5252

53-
## Shorthands
53+
## Kısaltmalar
5454

55-
There are shorthands for most used quantifiers:
55+
Çok kullanılan nicelik belirteçlerinin kısaltmaları mevcuttur:
5656

5757
`pattern:+`
58-
: Means "one or more", the same as `pattern:{1,}`.
58+
: "bir veya daha fazlası" anlamına gelir, `pattern:{1,}` ifadesine benzerdir.
5959

60-
For instance, `pattern:\d+` looks for numbers:
60+
Örneğin, `pattern:\d+` sayıları aramak içindir:
6161

6262
```js run
6363
let str = "+7(903)-123-45-67";
@@ -66,11 +66,11 @@ There are shorthands for most used quantifiers:
6666
```
6767

6868
`pattern:?`
69-
: Means "zero or one", the same as `pattern:{0,1}`. In other words, it makes the symbol optional.
69+
: "sıfır ya da bir" anlamına gelir, `pattern:{0,1}` ifadesine benzerdir. Başka bir deyişle, isteğe bağlı hale getirir.
7070

71-
For instance, the pattern `pattern:ou?r` looks for `match:o` followed by zero or one `match:u`, and then `match:r`.
71+
Örneğin, `pattern:ou?r` kalıbı, ilk önce `match:o` için, ardından `match:u` (sıfır veya bir adet) için, ve daha sonrasında `match:r` için arama yapar.
7272

73-
So, `pattern:colou?r` finds both `match:color` and `match:colour`:
73+
Yani, `pattern:colou?r`, hem `match:color` hem de `match:colour` öğelerini bulur:
7474

7575
```js run
7676
let str = "Should I write color or colour?";
@@ -79,64 +79,63 @@ There are shorthands for most used quantifiers:
7979
```
8080

8181
`pattern:*`
82-
: Means "zero or more", the same as `pattern:{0,}`. That is, the character may repeat any times or be absent.
82+
: "Sıfır veya daha fazlası" anlamına gelir, `pattern:{0,}` ile benzerdir. Yani bir karakter kendini tekrar edebilir veya hiç olmayabilir:
8383

84-
For example, `pattern:\d0*` looks for a digit followed by any number of zeroes (may be many or none):
84+
Örnek olarak, `pattern:\d0*`, bir sayı ve ardından onu takip eden sıfırları arar (çok sayıda sıfır olabilir ya da hiç olmayabilir):
8585

8686
```js run
8787
alert( "100 10 1".match(/\d0*/g) ); // 100, 10, 1
8888
```
8989

90-
Compare it with `pattern:+` (one or more):
90+
Bunu `pattern:+` (bir veya daha fazlası) ile karşılaştıralım:
9191

9292
```js run
9393
alert( "100 10 1".match(/\d0+/g) ); // 100, 10
94-
// 1 not matched, as 0+ requires at least one zero
94+
// 1 eşleşmedi, çünkü 0+ ifadesi en az bir sıfır varlığını gerektirir.
9595
```
9696

97-
## More examples
97+
## Daha Fazla Örnek
9898

99-
Quantifiers are used very often. They serve as the main "building block" of complex regular expressions, so let's see more examples.
99+
Nicelik belirteçleri sıklıkla kullanılır. Karmaşık düzenli ifade kalıplarının (regexp pattern) "yapı taşı" olarak kullanılırlar. Bu yüzden daha fazla örnek görelim.
100100

101-
**Regexp for decimal fractions (a number with a floating point): `pattern:\d+\.\d+`**
101+
**Ondalık kesirler için düzenli ifadeler (regexp) (kayan noktalı bir sayı): `pattern:\d+\.\d+`**
102102

103-
In action:
104103
```js run
105104
alert( "0 1 12.345 7890".match(/\d+\.\d+/g) ); // 12.345
106105
```
107106

108-
**Regexp for an "opening HTML-tag without attributes", such as `<span>` or `<p>`.**
107+
**"Nitelik barındırmayan HTML açılış etiketleri" için bir düzenli ifade (regexp),`<span>` veya `<p>` gibi.**
109108

110-
1. The simplest one: `pattern:/<[a-z]+>/i`
109+
1. En basit olanı: `pattern:/<[a-z]+>/i`
111110

112111
```js run
113112
alert( "<body> ... </body>".match(/<[a-z]+>/gi) ); // <body>
114113
```
115114

116-
The regexp looks for character `pattern:'<'` followed by one or more Latin letters, and then `pattern:'>'`.
115+
Bu düzenli ifade (regexp), ilk olarak `pattern:'<'` in, ardından bir veya daha fazla Latin harfi için ve daha sonrasında `pattern:'>'`in bir arama yapar.
117116

118-
2. Improved: `pattern:/<[a-z][a-z0-9]*>/i`
117+
2. Gelişmiş hali: `pattern:/<[a-z][a-z0-9]*>/i`
119118

120-
According to the standard, HTML tag name may have a digit at any position except the first one, like `<h1>`.
119+
Standarda göre HTML etiket isimleri `<h1>` gibi ilk karakter dışında herhangi bir pozisyonda bir rakam içerebilir.
121120

122121
```js run
123122
alert( "<h1>Hi!</h1>".match(/<[a-z][a-z0-9]*>/gi) ); // <h1>
124123
```
125124

126-
**Regexp "opening or closing HTML-tag without attributes": `pattern:/<\/?[a-z][a-z0-9]*>/i`**
125+
**"Nitelik barındırmayan HTML açılış ve kapanış etiketleri"in düzenli ifade (regexp): `pattern:/<\/?[a-z][a-z0-9]*>/i`**
127126

128-
We added an optional slash `pattern:/?` near the beginning of the pattern. Had to escape it with a backslash, otherwise JavaScript would think it is the pattern end.
127+
Kalıbın başında `pattern:/?` ile isteğe bağlı bir eğik çizgi (slash) belirttim. Ters eğik çizgiyle (backslash) bundan kurtuldum, aksi takdirde JavaScript bunun, düzenli ifade kalıbının sonu olduğunu düşünecekti.
129128

130129
```js run
131-
alert( "<h1>Hi!</h1>".match(/<\/?[a-z][a-z0-9]*>/gi) ); // <h1>, </h1>
130+
alert( "<h1>Merhaba!</h1>".match(/<\/?[a-z][a-z0-9]*>/gi) ); // <h1>, </h1>
132131
```
133132

134-
```smart header="To make a regexp more precise, we often need make it more complex"
135-
We can see one common rule in these examples: the more precise is the regular expression -- the longer and more complex it is.
133+
```smart header="Bir düzenli ifadeyi daha tutarlı/kesin hale getirmek için genellikle onu daha karmaşık hale getirmek gerekir"
134+
Bu örneklerde genel bir kural görebiliriz: düzenli ifade ne kadar tutarlı/kesin ise o kadar uzun ve karmaşıktır.
136135
137-
For instance, for HTML tags we could use a simpler regexp: `pattern:<\w+>`. But as HTML has stricter restrictions for a tag name, `pattern:<[a-z][a-z0-9]*>` is more reliable.
136+
Örneğin, HTML etiketleri için daha basit bir ifade kullanabiliriz: `pattern:<\w+>`. Ancak HTML, etiket isimleri için kısıtlamalara sahip olduğundan dolayı, `pattern:<[a-z][a-z0-9]*>` daha güvenilirdir.
138137
139-
Can we use `pattern:<\w+>` or we need `pattern:<[a-z][a-z0-9]*>`?
138+
`pattern:<\w+>` kalıbını kullanabilir miyiz yoksa `pattern:<[a-z][a-z0-9]*>` kalıbını mı kullanmamız gerekir?
140139
141-
In real life both variants are acceptable. Depends on how tolerant we can be to "extra" matches and whether it's difficult or not to remove them from the result by other means.
140+
Gerçek hayatta ikiside kabul edilebilir. "Ekstra" eşleşmelere ne kadar tahammül edebileceğimize ya da bunları başka yollarla sonuçtan çıkarmanın zor olup olmadığına bağlıdır.
142141
```

0 commit comments

Comments
 (0)