• Stars
    star
    176
  • Rank 216,987 (Top 5 %)
  • Language
  • Created almost 4 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Düzenli ifadeler (Regular Expressions | #Regex) Nedir? Nasıl Kullanılır? #JavaScript ile Regex

Regular Expressions | Regex | Düzenli İfadeler

Düzenli ifadeler (Regular Expressions | #Regex) Nedir? Nasıl Kullanılır? #JavaScript ile Regex

Bu doküman Kablosuzkedi Youtube kanalı için hazırlanmıştır. İsterseniz aşağıdaki linkten dersi izleyebilirsiniz :)

Düzenli ifadeler (Regular Expressions | #Regex) Nedir? Nasıl Kullanılır? #JavaScript ile Regex

Eveeett, geldik malum konuya. Regex bize herşeyden önce bir karakter seçim izni verir. Bu karakter veya karakter grubu tamamen sizin bakış açınıza göre değişir.

Flags

/g match All
/m multiline
/i case sensitive
/u unicode

Nicelikler / Notasyonlar

### + (one or more) Bir tane veya şarta uyan birden fazla karakteri tek bir ifade olarak seçer.

Aloooo burada ne oluyor acaba?

gibi bir cümlede

o+

yaparsak bize

Aloooo burada ne oluyor acaba?

ifadelerini dönecektir.

? Opsiyonel karakter

Opsiyonel olan karakterleri işaretlememiz için kullanılır

Aloooo burada ne oluyor acaba?

gibi bir cümlede

o+r?

yaparsak bize

Aloooo burada ne oluyor acaba?

ifadelerini dönecektir. Burada o+ dediğimiz için oooo olarak bize eşleşmenin tamamını verdi.

* (zero or more) | ? ve + Birleşimi

+ ve ? birleşimidir. Opsiyonel olarak mümkün olan eşlesmeyi yine birleşim olarak alir.

Aloooo burada ne oluyor acaba?

gibi bir cümlede

o+r*

yaparsak bize

Aloooo burada ne oluyor acaba?

ifadelerini dönecektir. Çünkü burada * karakterinin özelliğinden dolayı r opsiyonel olarak konumlandırılır. Eğer varsa da o ve r birleşimi olarak ele alacaktır.

### . (nokta) Notasyonu öncesindeki ya da sonrasindaki yeni satır hariç herhangi bir karakteri temsil eder.

Aloooo burada ne oluyor acaba? Yeni video geldi.
Bence güzel bir video olmuş
d..

yaparsak bize

Aloooo burada ne oluyor acaba? Yeni video geldi. Bence güzel bir video olmuş

ifadesini geri dönecektir. Eğer buna bir tane daha *(.) nokta koyarsak

d...

şeklinde bu sefer seçim

Aloooo burada ne oluyor acaba? Yeni video geldi. Bence güzel bir video olmuş

ifadesini geri dönecektir.

Fakat Nokta karakterini aramak istersek bu durumda;

\. ile escape yaparak nokta karakterini arayabiliriz.

\w

Boşluk olmayan tüm karakterleri teker teker seçer.

\W negatif versiyon (\w)

\w' nin tersidir. Sadece boşlukları teker teker seçer.

\s

Boşlukları seçerl

\S Negatif versiyon (\s)

\s' in tersidir. Boşluklar harici tüm karakterleri teker teker seçer.

\d Sayılar

Sayıları seçer

\D Sayı olmayanlar

Sayı olmayan karakterleri seçer.

Aralık belirleme

### {x,y} x karakterden oluşan bir kelime grubu seçer. y belirtilmek zorunda değildir. eğer belirtilmezse x ve daha fazlasi olarak yorumlanır

\w{4,}

4 karakterden fazla olan kelimeleri sec.

## Karakter Gruplama [fc]at Başı f ya da c ile başlayan "at" ile biten kelimeler. Aynı zamanda karakter gruplamayı bir aralık belirleme için de kullanabiliyoruz. Mesela a ile z arasındaki tüm karakterler gibi.

fat cat hat tat nat Fat Cat 4at 5at
[a-tA-T0-5]at

Aralık Belirleme

[a-z] [A-Z] [a-zA-Z] [0-9] [a-f]

gibi..

[a-zA-Z]at

Gruplama İşlemi (...)

Sadece 1 karakter degil birden fazla karakteri grup şeklinde almayi saglar (t|T)he başındaki karakter t ya da T olabilir sonu he ile biter..

The fat cat ran down the street.
(t|e|r){2,3}\.

içerisinde t veya e veya r geçen ve sonunda "." ile biren en az 2 en çok 3 karakterlik kelime gruplarini seç.

Bu bize eet. ifadesini verecektir.

rerere rarara bir şeyler şampiyon

buradan re{2,3} üzerinden ilerleyeceğiz.

(re|ra){2,3}

içerisinde en az 2 en cok 3 "re" olan kelime gruplarini sec

rere gibi ya da rerere

### ^ Satır başındaki karakteri belirleme

Sokakta yalnız yürüyorum.
sokak bunun farkında bile değil.
^[Ss]okak

satır başı T veya t ile başlayan he ile biten karakter gruplarını seç!

### $ Satır sonundaki karakteri belirleme

\.$

sonu nokta ile biten ifadeler.

## Lookahead

Belirlediğimiz karakter ya da karakter gruplarıyla devam eden yada devam etmeyen ifadeleri seçmemizi sağlar

ifade(lookahead)

şeklinde düşünülebilir. 2 farklı yöntemi vardır.

### Pozitif Lookahead | Seç - ?=

Negatif Lookahed'in tam tersidir. Belirlediğimiz karakter ile devam eden ifadeleri seçer. Mesela q ile başlayıp u ile devam etmeyen bir ifadeyi seçmek istersek

quantity and qrcode is really useful
q(?=u)[a-zA-Z0-0]+

şeklinde bir ifade yazılabilir. Buranın açıklmaası ise q ile başlayıp u ile devam eden kelime grubunu seç demektir.

Yine aynı metinden yola çıkarak u ile devam eden karakterleri seç demek istersek

.(?=u)

bu bize q ve boşluk ve f karakterlerini seçecektir.

Farklı bir örnek
The fat cat ran down the street. rere

ifadesinden at ile devam eden karakterleri seç demek istersen

.(?=at)

bu ifade bize f ve c karakterlerini verir. Çünkü cümle içerisinde at ile devam eden sadece fat ve cat vardır

burada f ve c yi alır.

Negatif Lookahead | Seçme - ?!

Belirlediğimiz karakter ile devam etmeyen ifadeleri seçer. Mesela q ile başlayıp u ile devam etmeyen bir ifadeyi seçmek istersek

quantity and qrcode is really useful
q(?!u)[a-zA-Z0-9]+

burada q ile başlayıp u ile devam etmeyen kelime grubunu seçer. [a-zA-Z0-9] ile herhangi bir karakteri gidebildiği karar seçmesini sagladik bu bize qrcode kelimesini geri döndürecektir.

q(?!r)[a-zA-Z0-9]+

Eğer bu ifadeyi u yerine r ile değiştirirsek yani q ile başlayıp r ile devam etmeyen kelime grubunu seç dersek bu durumda quantity seçilecektir.

Yine aynı metinden yola çıkarak u ile devam eden karakterleri seçme demek istersek

.(?!u)

bu bize q ve boşluk ve f hariç diğer tüm karakterleri seçecektir.

Farklı bir örnek
The fat cat ran down the street

kelimesinden at ile devam etmeyen tüm karakterleri seç demek istersen

.(?!at)

burada f ve c hariç hepsini teker teker seçer çünkü seçici olarak (.) nokta kullanılmıştır.

Look Behind

Öncesinde belirlediğimiz karakter ya da karakter gruplarıyla devam eden yada devam etmeyen ifadeleri seçmemizi sağlar

(lookabehind)ifade

### Pozitif Look Behind | Seç - ?<=

Seçeceğimiz ifadelerin öncesindeki karakter ve karakter grubunun olup olmamasını kontrol eder. Böylece öncesinde şu varsa bunu seç gibi bir seçim yapma durumuna imkan verir.

quantity and qrcode is really unuseful but this is an unethical

böyle bir cümlede un ile başlayan karakterleri seçelim.

(?<=un).

quantity and qrcode is really unuseful but this is an unethical

karakterlerini verecektir. Çünkü öncesinde un karakterleri bulunmaktadır.

Farklı bir örnek
quantity and qrcode is really unuseful but this is an unethical. The man was born in early age. Also the man is really old

cümlesinde almak istediğimiz kelimeler punisher ve man kelimeleri olsaydı. Bunun öncesinde The var mı yok mu diye kontrol edebilirdik. Diğer bir bakış açısı ise The veya the ile başlayan kelimeleri bana nasıl getirebilirdik? olabilir. Bunun için

(?<=[tT]he )[a-zA-Z]+

ifadesi bizim için yeterli olacaktır. Çünkü The ya da the bizim seçmek istediğimiz iki farklı kelime olduğu için burada T veya t opsiyonel olmalıdır. Bu ifade bize şunu punisher ve man kelimelerini verecektir.

Negatif Look Behind | Seçme - <?!

Pozitif look behind'ın tam tersidir. Pozitif look behind seçim yaparken, negatif içe öncesindeki karakter veya karakter grubunun olması durumunda devam eden ifadeyi seçmez.

quantity and qrcode is really unuseful but this is an unethical

böyle bir cümlede un ile başlayan karakterleri seçmeyelim.

(?<!un).

quantity and qrcode is really unuseful but this is an unethical

karakterleri haricindeki tüm karakterleri verecektir. Çünkü öncesinde un karakterleri bulunmaktadır.

Farklı bir örnek
quantity and qrcode is really unuseful but this is an unethical. The man was born in early age. Also the man is really old

cümlesinde öncesinde The veya the olmayan tüm karakterleri seç demek istersek

(?<![Tt]he ).

ifadesi bizim için yeterli olacaktır. Çünkü The ya da the bizim seçmek istediğimiz iki farklı kelime olduğu için burada T veya t opsiyonel olmalıdır. Bu ifade bize;

quantity and qrcode is really unuseful but this is an unethical. The punisher was born in early age. Also the man is really old

ifadesini verir. Çünkü The veya the ile devam eden karakterler p ve m karakterleri. Bu karakterler haricindekilerin tamamını seçecektir.

Örnekler

### Telefon Numarası Seçmek

1234567890
123-456-7890
123 456 7890
(123) 456-7890
+1 123 456 7890
\d{3}[ -]?\d{3}[ -]?\d{4}
(?<areacode>\d{3})[ -]?(?<inital>\d{3})[ -]?(?<deneme>\d{4})
\(?(?<areacode>\d{3})\)?[\) -]?(?<inital>\d{3})[ -]?(?<deneme>\d{4})
(\+\d{1}[ -])?\(?(?<areacode>\d{3})\)?[ -]?(?<inital>\d{3})[ -]?(?<deneme>\d{4})
(?:(\+\d{1})[ -])?\(?(?<areacode>\d{3})\)?[ -]?(?<inital>\d{3})[ -]?(?<deneme>\d{4})
(?:(\+\d{1})[ -])?\(?(?<areacode>\d{3})\)?[ -]?(?<inital>\d{3})[ -]?(?<deneme>\d{4})
(?<area>(\+\d{1,}))[ -]?\(?(?<operator>\d{3})\)?[ -]?(?<main>\d{3})[ -]?(?<number>\d{4})
((?<area>\+\d{1,2})[ -])?\(?(?<operator>\d{3})\)?[ -]?(?<main>\d{3})[ -]?(?<number>\d{4})

Video içerisinde yapılan

(?<areaCode>\+\d{2})?[ ]?\(?(?<operator>\d{3})\)?[ -]?(?<main>\d{3})[ -]?(?<number>\d{4})

Tarih Validasyonu

14/02/2018
14-02-2018
14.02.2018
14.02.18
(?<day>([0-9]{2}))([\/\-\.])(?<month>([0-9]{2}))([\/\-\.])(?<year>([0-9]{2,4}))

Video içerisinde yapılan

(?<day>\d{2})[\/\-\.](?<month>\d{2})[\/\-\.](?<year>\d{2,4})
ÖDEV
2018/02/14
2018-02-14
2018.02.14
18.02.14

[url~title] içerisinden bilgileri almak

[https://www.videosinif.com~videosinif]
[https://www.kablosuzkedi.com,kablosuzkedi]
[https://www.youtube.com/kablosuzkedi|kablosuzkedi youtube kanalı]

İlk olarak URL kısmını alalım

(?<=\[)(.*)(?=~)

pozitif look behind ve pozitif look ahead

(?<url>((?<=\[)(.*)(?=~)))

URL'yi gruplayarak ayıralım

(?<title>(?<=~)(.*)(?=\]))

title bilgisini de gruplayarak alabiliriz.

(?<url>((?<=\[)(.*)(?=[~|\,|\|])))[~\,\|](?<title>(?<=[~|\,|\|])(.*)(?=\]))
(?<url>(?<=\[)(.*)(?=[~,\|]))[~|,|\|](?<title>(?<=[~|,|\|])(.*)(?=\]))?

Video içerisinde yapılan

(?<=\[)(?<url>.*)(?=[~,\|])[~,\|](?<=[~,\|])(?<title>.*)(?=\])

Bu iki ifadenin de ayni gruplarda toplanabilmesi için araya ~ ekleyerek tüm ifadeyi seçtiriyoruz.

### Key: value Çiftini almak

Name: Gokhan
LastName: Kandemir
Address: Adana
Age: 33
Married: Yes
(?<fieldName>^[a-zA-Z]+): (?<value>[a-zA-Z0-9]+)

### Web Sayfasından linkleri almak

<a(\s+)href="(?<url>([^"]*))"
<img(\s)+src='[^']*'

[^'] => ' olmayan tüm karakterleri seç

### <body>...</body> içerisindeki içeriği almak.

<body[^>]*>([\w|\W]*)<\/body>

### Email Validasyonu

[email protected] adresinden güzel bir email aldim. peki bu .com uzantılı email adreslerinden çektiğimiz nedir be kardeşim. onunla beraber [email protected] diye ayri bir ergen zamanlarimda aldigim email adresi de mevcut :D
([a-zA-Z0-9])+\@([a-zA-Z0-9])+\.[a-zA-Z]{2,}

Video içerisinde yapilan.

\w+@\w+\.[a-zA-Z]{2,}

### URL Validasyonu

burada bir ton web sayfası var. https://www.google.com bunlardan bir tanesi. Neden olduğunu bilmiyorum ama http://www.test123.space de bunlardan bir tanesi. Oldukça güzel bir web sayfası daha var burada www.kablosuzkedi.com uzun zamandan beri güncellenmemiş fakat yine de bilgiler işe yarayabilir. Fakat video izlemek isterseniz youtube.com da buna uyan diğer bir güzel web sayfası
(https?:?\/\/)?(www)?\.?[a-zA-Z0-9]+\.[a-zA-Z]{2,}

Video içerisinde Yaptığımız örnek

(https?:\/\/)?(www\.)?([a-zA-Z0-9]+)(\.[a-zA-Z]{2,})

Hashtag Ayıklamak

Regex için video hazırlıyorum. #Regex ile çözümlemek için Bana uğraştığınız merak ettiğiniz metinleri yazabilir misiniz? Mesela #Web sayfasındaki <body></body> #tag 'leri arasındaki bilgileri almak gibi. Bu #kolay tabi :) #Derdımianlatabilmişimdirumarim :) #360dayscleancode
#[a-zA-Z0-9işüğçöı]+

Youtube, Vimeo, İzlesene Video URL Ayıklama

data-config-url="https://player.vimeo.com/video/488734703/config?autopause=1&amp;autoplay=1&amp;byline=0&amp;collections=1&amp;context=Vimeo%5CController%5CClipController.main&amp;default_to_hd=1&amp;outro=nothing&amp;portrait=0&amp;share=1&amp;title=0&amp;watch_trailer=0&amp;s=8be48fe12cfacadb79085e9c2acbd6568c1fb641_1609112069" data-fallback-url="//player.vimeo.com/video/488734703/fallback?js"

ZeroMQ nedir isimli video şu an yayında! https://www.youtube.com/watch?v=YAYp7hbOu7o

Pentagram'ın güzel bir şarkısı güzel bir şarkı gibi sanki ama eski tadını vermiyor https://www.izlesene.com/video/pentagram-bu-duzen-yikilsin/10523935
(https:\/\/)(www\.)?(?<vimeo>(player\.vimeo\.com\/video\/[0-9]+\/)?)(?<youtube>youtube\.com\/watch\?v=[a-zA-Z0-9]+)?(?<izlesene>(izlesene\.com\/video\/[a-zA-Z0-9\/-]+))?

JavaScipt ile Yaptığımız Kodlar

JavaScript ile E-mail Validasyonu

const email_regex = /\w+@\w+\.[a-zA-Z]{2,}/g;
if (email_regex.test("[email protected]")) {
    alert("Başarılı");
} else {
    alert("Başarısız")
}

JavaScript ile Hashtag Listesini Almak

const regex = /#[a-zA-Z0-9şığüçö]+/gm;

const str = `Regex için video hazırlıyorum. #Regex ile çözümlemek için Bana uğraştığınız merak ettiğiniz metinleri yazabilir misiniz? Mesela #Web sayfasındaki <body></body> #tag 'leri arasındaki bilgileri almak gibi. Bu #kolay tabi :) #Derdimianlatabilmişimdirumarım :) #360dayscleancode`;

// console.log(str.match(regex));

str.match(regex).forEach(h => console.log(h));

Son olarak isterseniz bu link üzerinden Regex örneklerini inceleyerek kendinizi test edebilirsiniz. Oldukça faydalı olduğunu söyleyebilirim :)

More Repositories

1

docker

Kablosuzkedi Kanalındaki Docker Serisi için Hazırlanmış Dokümantasyondur
JavaScript
929
star
2

kablosuzkedi-vue3-bootcamp

kablosuzkedi youtube kanalındaki Vue3 Bootcamp kaynak kodları
HTML
159
star
3

airbnb-javascript-style-guide

AirBnb Javascript Style Guide'ının Türkçe diline çevrildiği repository
JavaScript
71
star
4

apache-kafka

Apache Kafka Eğitiminin Kodlarıdır. | https://youtu.be/ZphPT3r6fnU
JavaScript
41
star
5

yapay-zeka-ile-duygu-kontrolu

FaceApi ile Beraber Yüzümüzeki Duyguları Okumak
JavaScript
26
star
6

web-push-notifications

kablosuzkedi youtube kanalı için oluşturulmuş kaynak kodları
JavaScript
22
star
7

electron-js-tutorial

Desktop Application using Electron.js
JavaScript
20
star
8

vue-js-crash-course

Yazılım Bilimi Youtube kanalı için yapılan 1 Videoda Vue.js eğitiminin kaynak dosyaları
HTML
20
star
9

redis-node-js-usage

Redis Nedir? Redis ile Node.js Kullanımı
JavaScript
19
star
10

rabbitmq-nodejs-usage

JavaScript
19
star
11

yapay-zeka-ile-yuz-tanima-sistemi

FaceApi ile Yüz Tanıma Sistemi Yapımı
JavaScript
18
star
12

node-js-rest-api-heroku-deployment

Node.JS Heroku Deployment (Example : REST API)
JavaScript
17
star
13

vue-text-to-speech

Vue.js ile Text To Speech API Kullanımı
CSS
17
star
14

vuejs-codeigniter-api

Codeigniter ile API oluşturup Vue.js ile Bunu nasıl kullanacağımızı gösteren eğitimin kaynak kodları.
PHP
17
star
15

slim-framework-restful-api

RestAPI using Slim Framework
PHP
16
star
16

dockerize-nodejs-app

Node.js Projesini #Dockerize Etmek (#Node.js Uygulamalarını #Docker üzerinden Çalıştırmak)
JavaScript
16
star
17

javascript-face-detection

JavaScript ile Face Detection Yapımı
HTML
16
star
18

codeigniter-tutorials

PHP
16
star
19

faceid-ile-web-sayfasinda-oturum-acmak

HTML
14
star
20

firebase-todo-list

Firebase Kullanarak JQuery ile TODO List Yapımı
JavaScript
13
star
21

vue-speech-to-text-api-regex-not-uygulamasi

Vue.js ile Speech To Text Api Kullanarak Regex Kontrollü Not Uygulaması yapımı
Vue
13
star
22

codeigniter-like-dislike-uygulamasi

Codeigniter Kullanarak Like/Dislike Uygulamasi yapimi
PHP
13
star
23

vue-html-print

JavaScript
12
star
24

Codeigniter-Otel-Rezervasyonu

JavaScript
12
star
25

codeigniter-simple-todo

Yazılım Bilimi kanalı için çekilen Codeigniter ile Basit TODO Uygulaması
PHP
11
star
26

softtech-bootcamp-1

HTML
11
star
27

web-components-movie-search-app

Web Component Kullanılarak yapılan Movie Search App
JavaScript
11
star
28

codeigniter-multi-user-tutorial

Codeigniter ile Çoklu Oturum Yapımı
PHP
10
star
29

zero-mq

1 Videoda Zero MQ Eğitimi Kaynakları
JavaScript
10
star
30

softtech-bootcamp-3

Bilginç Akademi ile Softtech için yaptığımız Bootcamp'in Kaynak Kodları
HTML
10
star
31

Todo-api-nodejs

NodeJS ile Todo API Çalışması
JavaScript
9
star
32

gkandemi-insider-kodluyoruz-vue-egitim

HTML
9
star
33

gkandemi

9
star
34

Codeigniter-Tutorial-API-Plugin-WS

Tutorial of Plugin, API, WS by using Codeigniter
PHP
9
star
35

coderspace-bootcamp

Vue
9
star
36

codeigniter-kitap

Codeigniter 3 Kitabının Uygulamaları
PHP
8
star
37

codeigniter-join-tutorial

Codeigntier ile Join Kullanımı
PHP
8
star
38

web-components-fundamentals

https://youtu.be/mIzJ5SSeO7M üzerindeki eğitimin kaynak kodlarıdır
JavaScript
8
star
39

javascript-array-functions

JavaScript
7
star
40

push-js-desktop-notification

Push.js Kullanarak Masaüstünde Kullanıcılara Notification Verdirmek
JavaScript
7
star
41

php-tutorials

CSS
7
star
42

sms-api

JavaScript
7
star
43

CMS_Work

CMS ile ilgili Çalışmalarım
Python
6
star
44

socket-basics

NodeJS ile Socket Çalışması
JavaScript
6
star
45

nodejs-web-server

JavaScript
6
star
46

express-js-tutorial

Express.JS kullanımı ile ilgili Çalışmalar
JavaScript
6
star
47

vuejs-translate-api

Vue.js ile Yandex Translate API kullanılarak Online Çevirici yapımı
Vue
6
star
48

softtech-bootcamp-2

Bilginç Akademi ile Softtech için yaptığımız Bootcamp'in Kaynak Kodları
HTML
6
star
49

postman

Postman Kullanımını anlamak için Node.JS ile GET, POST, PUT, DELETE metotlarını okumak
JavaScript
5
star
50

adonisjs-tutorials

Blog Project using AdonisJs
JavaScript
5
star
51

php-mailer

PHPMailer kullanarak, Mail Form yardımıyla mail gönderme
PHP
5
star
52

Java

Java Çalışmaları Projeleri
Java
5
star
53

vs-tags

This is Tags Input Component created by VueJS. The official name is vs-tags
Vue
5
star
54

vs-checkbox

This is Checkbox Component by Vue.js 2x
Vue
5
star
55

insider-1-content

HTML
5
star
56

heroku-php

PHP
5
star
57

Ionic2-Works

This repository has my ionic2 works
TypeScript
5
star
58

PHP-Tutorial-with-API-Plugin-WS

Tutorial of Plugin, API, WS by using PHP
JavaScript
5
star
59

plesk-rails-app

Ruby
4
star
60

soner_run

Python
3
star