Referans - Bu normal ifade ne anlama geliyor?
Bu nedir?
Bu, ortak bir Soru-Cevap koleksiyonudur. Bu aynı zamanda bir Topluluk Wiki'sidir, bu nedenle herkes onu sürdürmeye davetlidir.
Bu neden?
regex bana ze kod türü sorulardan ve açıklamasız zayıf yanıtlardan muzdarip . Bu referans, kaliteli Soru-Cevap'a bağlantılar sağlamak içindir.
Kapsam nedir?
Bu referans şu diller içindir: php , perl , javascript , python , ruby , java , .net .
Bu çok geniş olabilir, ancak bu diller aynı sözdizimini paylaşır. Belirli özellikler için arkasında dilin etiketi vardır, örneğin:
- Normal ifade Dengeleme Grupları nedir? .ağ
Yanıtlar
Stack Overflow Normal İfadeler SSS
Ayrıca normal ifade etiketi ayrıntıları sayfasındaki birçok genel ipucuna ve yararlı bağlantılara bakın .
Çevrimiçi eğitimler
Niceleyiciler
- Sıfır ya-daha:
*
: açgözlü ,*?
: isteksiz ,*+
: iyelik - Tek ya da daha fazla:
+
: açgözlü ,+?
: isteksiz ,++
: iyelik ?
: isteğe bağlı (sıfır veya bir)- Min / Maks aralıkları (herşey):
{n,m}
n ve m arasında ,{n,}
n-veya-daha ,{n}
: tam olarak n - Açgözlü, isteksiz ("tembel", "tepkisiz" olarak da bilinir) ve iyelik nicelik belirteci arasındaki farklar:
- Açgözlü, İsteksiz ve İyelik Sayaçları
- Açgözlü ve açgözlü olmayan arasındaki farklar üzerine derinlemesine tartışma
- Arasındaki fark nedir
{n}
ve{n}?
- Birisi bana İyelik Niceleyicileri açıklayabilir mi? php , perl , java , yakut
- İyelik nicelik belirteçlerini taklit etme .net
- Yığın Dışı Taşma referansları: Oracle'dan , normal-expressions.info
Karakter Sınıfları
- Köşeli parantezler ve parantezler arasındaki fark nedir?
[...]
: herhangi bir karakter[^...]
,: olumsuz / herhangi bir karakter hariç[^]
yeni satırlar dahil herhangi bir karakterle eşleşir javascript[\w-[\d]]
/[a-z-[qz]]
: çıkarma .net , xml-schema , xpath , JGSoft'u ayarla[\w&&[^\d]]
: kavşak java ayarla , yakut 1.9+[[:alpha:]]
: POSIX karakter sınıfları- Neden yok
[^\\D2]
,[^[^0-9]2]
,[^2[^0-9]]
Java farklı sonuçlar elde? java - Kısa gösterim:
- Rakam:
\d
: haneli ,\D
: non haneli - Kelime karakteri (harf, rakam, alt çizgi):
\w
: sözcük karakteri ,\W
: sözcük olmayan karakter - Boşluk:
\s
: boşluk ,\S
: boşluk olmayan
- Rakam:
- Unicode kategorileri (
\p{L}, \P{L}
vb.)
Kaçış dizileri
- Yatay boşluk:
\h
: uzay-ya-tab ,\t
: sekme - Yeni satırlar:
- Olumsuz beyaz boşluk dizileri::
\H
Yatay olmayan boşluk karakteri\V
\N
,: Dikey olmayan beyaz boşluk karakteri ,: Satırsız besleme karakteri pcre php5 java-8 - Diğer:
\v
: dikey sekme ,\e
: Çıkış karakteri
Çapalar
^
: hat / giriş başlangıç ,\b
: kelime sınırının ve\B
: sözcük olmayan sınır ,$
: hattı / girdi sonunu\A
: giriş başlangıcı\Z
,: giriş php , perl , ruby sonu\z
: girişin en sonu (\Z
Python'da) .net , php , pcre , java , ruby , icu , swift , amaç-c\G
: eşleşme başlangıcı php , perl , ruby
(Ayrıca "Lezzete Özgü Bilgiler → Java → içindeki işlevler" bölümüne bakın Matcher
)
Gruplar
(...)
: Yakalama grubu ,(?:)
: sigara yakalama grubu\1
: geri referans ve yakalama grubu referansı,:$1
yakalama grubu referansı- Alt şablon ne anlama
(?i:regex)
geliyor? - 'P' ne anlama
(?P<group_name>regexp)
geliyor? (?>)
: atomik grup veya bağımsız grup ,(?|)
: dal sıfırlama- Adlandırılmış yakalama grupları:
- Genel adlı yakalama grubu referansı
regular-expressions.info
- java :
(?<groupname>regex)
: Genel Bakış ve adlandırma kuralları (Non-yığın taşması bağlantılar) - Diğer diller: piton , .net , perl , ve php
(?P<groupname>regex)
(?<groupname>regex)
(?<groupname>regex)
(?P<groupname>regex)
(?<groupname>regex)
- Genel adlı yakalama grubu referansı
Lookarounds
- Lookaheads:
(?=...)
: pozitif ,(?!...)
: negatif - Geriye bakan:
(?<=...)
: pozitif ,(?<!...)
: negatif (desteklemediği JavaScript ) - Aşağıdakilerde geriye doğru bakma sınırları:
- Geriye bakma alternatifleri:
Değiştiriciler
- Çoğu tatlar:
g
: Küresel ,i
: küçük harf duyarsız ,u
: unicode ,x
: boşluk-uzatıldı c
: geçerli konum perle
: ifade php perlo
: bir kez yakutm
: satırlı php perl piton javascript .net java ,m
: (non) satırlı yakuts
: tek satır ( javascript veya ruby tarafından desteklenmez ),s
geçici çözüm javascriptS
: php çalışmasıU
: ungreedy php r- Preg_replace e'yi preg_replace_callback'e nasıl dönüştürebilirim?
- Satır içi değiştiriciler nelerdir?
- Ruby Normal İfadesinde '? -Mix' nedir
Diğer:
|
: münavebe (OR) operatörü ,.
: Herhangi bir karakter ,[.]
: literal nokta karakteri- Hangi özel karakterlerden kaçınılmalıdır?
- Kontrol fiiller ( php ve perl ):
(*PRUNE)
,(*SKIP)
,(*FAIL)
ve(*F)
- sadece php :
(*BSR_ANYCRLF)
- sadece php :
- Yineleme ( php ve Perl )
(?R)
,(?0)
ve(?1)
,(?-1)
,(?&groupname)
Ortak görevler
- İki kaşlı ayraç arasında bir dize alın:
{...}
- S1, s2, s3 ... durumları dışında bir kalıbı eşleştirin (veya değiştirin).
- Bir normal ifade kullanarak bir dizedeki tüm YouTube video kimliklerini nasıl bulabilirim?
- Doğrulama:
- İnternet: e-posta adresleri , URL'ler (ana bilgisayar / bağlantı noktası: normal ifade ve normal olmayan alternatifler), şifreler
- Sayısal: bir sayı , minimum-maksimum aralıklar (1-31 gibi) , telefon numaraları , tarih
- HTML'yi regex ile ayrıştırma: Bkz. "Genel Bilgiler> Regex Ne Zaman Kullanılmamalıdır"
Gelişmiş Regex-Fu
- Dizeler ve sayılar:
- Kelime içermeyen bir satırla eşleşen normal ifade
- Bu PCRE paterni palindromları nasıl tespit eder?
- Uzunluğu dördüncü kuvvet olan dizeleri eşleştir
- Bu normal ifade üçgen sayıları nasıl bulur?
- Bir sayının regex ile asal olup olmadığı nasıl belirlenir?
- Bir dizedeki orta karakter normal ifadeyle nasıl eşleştirilir?
- Diğer:
- ^ Nb ^ n'yi Java regex ile nasıl eşleştirebiliriz?
- İç içe köşeli parantezleri eşleştir
- Bir ASCII "resim" içinde "Dikey" normal ifade eşleşmesi
- Code Golf'te yüksek oyu alan normal ifade sorularının listesi
- İki niceleyicinin aynı sayıda yinelenmesi nasıl yapılır?
- Eşleşmesi imkansız bir normal ifade:
(?!a)a
this
A, B ve C bağlamları dışında eşleştir / sil / değiştir- Özyineleme veya dengeleme grupları kullanmadan iç içe köşeli parantezleri normal ifadeyle eşleştirilsin mi?
Lezzete Özgü Bilgiler
(İle işaretlenenler dışında *
, bu bölüm Yığın Taşması olmayan bağlantılar içerir.)
- Java
- Resmi belgeler: Pattern Javadoc , Oracle'ın normal ifadeler öğreticisi
- Aşağıdaki işlevler arasındaki farklar
java.util.regex.Matcher
:matches()
): Eşleşme hem giriş-başlangıç hem de bitişe sabitlenmelidirfind()
): Bir eşleşme, giriş dizesinin herhangi bir yerinde olabilir (alt dizeler)lookingAt()
: Eşleşme, yalnızca giriş başlangıcına sabitlenmelidir- (Genel olarak çapalar için "Çapalar" bölümüne bakın)
- Sadece
java.lang.String
normal ifadeleri kabul işlevleri:matches(s)
,replaceAll(s,s)
,replaceFirst(s,s)
,split(s)
,split(s,i)
- * Alanın dezavantajları ve eksik özelliklerinin (görüşlü ve) ayrıntılı bir tartışması
java.util.regex
- .AĞ
- Resmi belgeler:
- Yükseltme normal ifade motoru: Genel sözdizimi , Perl sözdizimi (TextPad, Sublime Text, UltraEdit, ... ??? tarafından kullanılır)
- JavaScript 1.5 genel bilgileri ve RegExp nesnesi
- .NET
- PHP: kalıp sözdizimi ,
preg_match
- Python: Düzenli ifade işlemleri ,
search
vsmatch
, nasıl yapılır - Splunk: regex terminolojisi ve sözdizimi ve regex komutu
- Tcl: normal ifade sözdizimi , kılavuz sayfası ,
regexp
komut - Visual Studio Bul ve Değiştir
Genel bilgi
(İle işaretlenen *
bağlantılar, Yığın Taşma olmayan bağlantılardır.)
- Diğer genel belge kaynakları: Düzenli İfadeleri Öğrenme , * Regular-expressions.info , * Wikipedia girişi , * RexEgg , Açık Dizin Projesi
- DFA ve NFA
- Normal ifadeyle eşleşen dizeler oluşturma
- Kitaplar: Jeffrey Friedl's Mastering Regular Expressions
- Ne zaman için değil normal ifadeleri kullanın:
- Bazı insanlar bir problemle karşılaştıklarında "Biliyorum, normal ifadeler kullanacağım" diye düşünürler. Şu an iki problemleri var. ( Stack Overflow'un kurucusutarafından yazılan blog yayını) *
- HTML'yi ayrıştırmak için normal ifade kullanmayın:
- Yapma .
- Belki ... gerçekten kararlıysanız (bu sorudaki diğer cevaplar da iyidir)
- Yapma .
Normal ifade motorunun başarısız olmasına neden olabilecek normal ifade örnekleri
Araçlar: Test Ediciler ve Açıklayıcılar
(Bu bölüm Yığın Taşması olmayan bağlantılar içerir.)
Çevrimiçi (* yedek test cihazı içerir, + ayrık test cihazı içerir) :
- Debuggex (Ayrıca yararlı regex'lerin deposu vardır) javascript , python , pcre
- * Normal İfadeler 101 php , pcre , python , javascript
- Regex Pal , düzenli-ifadeler.info javascript
- Rubular ruby
- * + regexstorm.net .net
- * RegexPlanet: Java java , Go go , Haskell haskell , JavaScript javascript , .NET dotnet , Perl perl php PCRE php , Python python , Ruby ruby , XRegExp xregexp
freeformatter.com
xregexp- * + php PCRE ve POSIX, javascript
regex.larsolavtorvik.com
- Refiddle JavaScript yakut .net
Çevrimdışı:
- Microsoft Windows: RegexBuddy (analiz), RegexMagic (oluşturma), Expresso (analiz, oluşturma, ücretsiz)