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::
\HYatay 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 (\ZPython'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ı,:$1yakalama 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 perl
e: ifade php perl
o: 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 ),sgeç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 thisA, 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.Stringnormal 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
MySQL
Oracle
Perl5 sürüm 18.2
- PHP: kalıp sözdizimi ,
preg_match - Python: Düzenli ifade işlemleri ,
searchvsmatch, nasıl yapılır - Splunk: regex terminolojisi ve sözdizimi ve regex komutu
- Tcl: normal ifade sözdizimi , kılavuz sayfası ,
regexpkomut - 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 .
Lütfen 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
RegExr
Regex Hero dotnet
- * + 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.comxregexp- * + 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)