Referensi - Apa arti regex ini?
Apa ini?
Ini adalah kumpulan Tanya Jawab umum. Ini juga merupakan Wiki Komunitas, jadi semua orang diundang untuk berpartisipasi dalam memeliharanya.
Kenapa ini?
regex menderita karena memberi saya pertanyaan jenis kode ze dan jawaban yang buruk tanpa penjelasan. Referensi ini dimaksudkan untuk memberikan tautan ke Tanya Jawab yang berkualitas.
Apa ruang lingkupnya?
Referensi ini ditujukan untuk bahasa berikut: php , perl , javascript , python , ruby , java , .net .
Ini mungkin terlalu luas, tetapi bahasa-bahasa ini memiliki sintaks yang sama. Untuk fitur tertentu ada tag bahasa dibaliknya, contoh:
- Apa itu Grup Penyeimbang ekspresi reguler? .bersih
Jawaban
FAQ Ekspresi Reguler Stack Overflow
Lihat juga banyak petunjuk umum dan link berguna di halaman detail tag regex .
Tutorial online
Pengukur
- Zero-atau-lebih:
*
: serakah ,*?
: enggan ,*+
: posesif - Satu-atau-lebih:
+
: serakah ,+?
: enggan ,++
: posesif ?
: opsional (nol-atau-satu)- Min / max rentang (semua):
{n,m}
: antara n & m ,{n,}
n-atau-lebih ,{n}
: tepatnya n - Perbedaan antara serakah, enggan (alias "malas", "ungreedy") dan pembilang posesif:
- Pengukur Serakah vs. Enggan vs. Posesif
- Diskusi mendalam tentang perbedaan antara serakah versus non-serakah
- Apa perbedaan antara
{n}
dan{n}?
- Bisakah seseorang menjelaskan Pengukur Posesif kepada saya? php , perl , java , ruby
- Meniru bilangan posesif .net
- Referensi Non-Stack Overflow: Dari Oracle , regular-expressions.info
Kelas Karakter
- Apa perbedaan antara tanda kurung siku dan tanda kurung?
[...]
: salah satu karakter[^...]
,: dinegasikan / karakter apa pun kecuali[^]
cocok dengan salah satu karakter termasuk javascript baris baru[\w-[\d]]
/[a-z-[qz]]
: set pengurangan .net , xml-schema , xpath , JGSoft[\w&&[^\d]]
: set persimpangan java , ruby 1.9+[[:alpha:]]
: Kelas karakter POSIX- Mengapa
[^\\D2]
,[^[^0-9]2]
,[^2[^0-9]]
mendapatkan hasil yang berbeda di Jawa? Jawa - Steno:
- Digit:
\d
: digit ,\D
: non-digit - Kata karakter (Surat, digit, garis bawah):
\w
: kata karakter ,\W
: karakter non-kata - Spasi:
\s
: spasi ,\S
: non-spasi
- Digit:
- Kategori unicode (
\p{L}, \P{L}
, dll.)
Escape Sequences
- Horisontal spasi:
\h
: ruang-atau-tab ,\t
: tab - Baris baru:
- Urutan spasi putih yang dinegasikan:: Karakter spasi kosong
\H
non horizontal,: Karakter spasi putih\V
non vertikal,: Karakter\N
umpan tanpa baris pcre php5 java-8 - Lainnya:
\v
: tab vertikal ,\e
: karakter escape
Jangkar
^
: mulai dari baris / input ,\b
: batas kata, dan\B
: batas non-kata ,$
: akhir baris / input\A
: awal input,:\Z
akhir input php , perl , ruby\z
: input paling akhir (\Z
dengan Python) .net , php , pcre , java , ruby , icu , swift , objektif-c\G
: mulai pertandingan php , perl , ruby
(Juga lihat "Informasi Khusus Rasa → Java → Fungsi di Matcher
")
Grup
(...)
: capture kelompok ,(?:)
yaitu kelompok non-capture\1
: referensi latar dan referensi$1
kelompok tangkap,: rujukan kelompok tangkap- Apa yang dimaksud dengan subpola
(?i:regex)
? - Apa artinya 'P'
(?P<group_name>regexp)
? (?>)
: kelompok atom atau kelompok independen ,(?|)
: ulang cabang- Kelompok penangkap bernama:
- Referensi grup penangkap bernama umum di
regular-expressions.info
- java :
(?<groupname>regex)
: Ikhtisar dan aturan penamaan (Non-Stack Overflow link) - Bahasa lain: python , .net , perl , dan php
(?P<groupname>regex)
(?<groupname>regex)
(?<groupname>regex)
(?P<groupname>regex)
(?<groupname>regex)
- Referensi grup penangkap bernama umum di
Lookarounds
- Lookaheads:
(?=...)
: positif ,(?!...)
: negatif - Lookbehinds:
(?<=...)
: positif ,(?<!...)
: negatif (tidak didukung oleh javascript ) - Lihat di balik batas dalam:
- Lihat alternatif di belakang:
Pengubah
- Kebanyakan rasa:
g
: global yang ,i
: kasus-sensitif ,u
: unicode ,x
: spasi-diperpanjang c
: posisi saat ini perle
: ekspresi php perlo
: sekali rubym
: multiline php perl python javascript .net java ,m
: (non) multiline rubys
: baris tunggal (tidak didukung oleh javascript atau ruby ), javascripts
solusiS
: belajar phpU
: ungreedy php r- Bagaimana cara mengonversi preg_replace e ke preg_replace_callback?
- Apa itu pengubah sebaris?
- Apa itu '? -Mix' di Ruby Regular Expression
Lain:
|
: (OR) operator silih bergantinya ,.
: setiap karakter ,[.]
: literal dot karakter- Karakter khusus apa yang harus di-escape?
- Kontrol kata kerja ( php dan perl ):
(*PRUNE)
,(*SKIP)
,(*FAIL)
dan(*F)
- php saja:
(*BSR_ANYCRLF)
- php saja:
- Rekursi ( php dan perl ):
(?R)
,(?0)
dan(?1)
,(?-1)
,(?&groupname)
Tugas Umum
- Dapatkan tali di antara dua kurung kurawal:
{...}
- Cocokkan (atau ganti) pola kecuali dalam situasi s1, s2, s3 ...
- Bagaimana cara menemukan semua id video YouTube dalam string menggunakan regex?
- Validasi:
- Internet: alamat email , URL (host / port: alternatif regex dan non-regex ), sandi
- Numerik: angka , rentang min-max (seperti 1-31) , nomor telepon , tanggal
- Parsing HTML dengan regex: Lihat "Informasi Umum> Kapan tidak menggunakan Regex"
Regex-Fu Lanjutan
- String dan angka:
- Ekspresi reguler untuk mencocokkan baris yang tidak berisi kata
- Bagaimana pola PCRE ini mendeteksi palindrom?
- Cocokkan senar yang panjangnya merupakan pangkat empat
- Bagaimana regex ini menemukan bilangan segitiga?
- Bagaimana cara menentukan apakah suatu bilangan adalah bilangan prima dengan ekspresi reguler?
- Bagaimana cara mencocokkan karakter tengah dalam string dengan regex?
- Lain:
- Bagaimana kita bisa mencocokkan ^ nb ^ n dengan Java regex?
- Cocokkan tanda kurung bertingkat
- Pencocokan ekspresi reguler "Vertikal" dalam "gambar" ASCII
- Daftar pertanyaan regex yang mendapat banyak suara positif di Code Golf
- Bagaimana cara membuat dua bilangan berulang dengan jumlah yang sama?
- Ekspresi reguler yang tidak mungkin dicocokkan:
(?!a)a
- Cocokkan / hapus / ganti
this
kecuali dalam konteks A, B dan C - Cocokkan tanda kurung bersarang dengan regex tanpa menggunakan grup rekursi atau penyeimbang?
Informasi Khusus Rasa
(Kecuali yang ditandai dengan *
, bagian ini berisi tautan non-Stack Overflow.)
- Jawa
- Dokumentasi resmi: Pattern Javadoc , tutorial ekspresi reguler Oracle
- Perbedaan antar fungsi dalam
java.util.regex.Matcher
:matches()
): Pertandingan harus ditambatkan ke input-start dan -endfind()
): Pertandingan bisa ada di mana saja dalam string input (substring)lookingAt()
: Pertandingan harus ditambatkan ke input-start saja- (Untuk jangkar secara umum, lihat bagian "Jangkar")
- Satu-satunya
java.lang.String
fungsi yang menerima ekspresi reguler:matches(s)
,replaceAll(s,s)
,replaceFirst(s,s)
,split(s)
,split(s,i)
- * Diskusi mendetail (beropini dan) tentang kerugian dan fitur yang hilang di
java.util.regex
- .BERSIH
- Dokumentasi resmi:
- Boost regex engine: Sintaks umum , sintaks Perl (digunakan oleh TextPad, Sublime Text, UltraEdit, ... ???)
- Info umum JavaScript 1.5 dan objek RegExp
- .NET
- PHP: sintaks pola ,
preg_match
- Python: Operasi ekspresi reguler ,
search
vsmatch
, cara - Splunk: terminologi regex dan sintaks dan perintah regex
- Tcl: sintaks regex , halaman manual ,
regexp
perintah - Visual Studio Temukan dan Ganti
Informasi Umum
(Tautan yang ditandai dengan *
adalah tautan non-Stack Overflow.)
- Sumber dokumentasi umum lainnya: Learning Regular Expressions , * Regular-expressions.info , * entri Wikipedia , * RexEgg , Open-Directory Project
- DFA versus NFA
- Menghasilkan String yang cocok dengan regex
- Buku: Menguasai Ekspresi Reguler Jeffrey Friedl
- Kapan tidak menggunakan ekspresi reguler:
- Beberapa orang, ketika dihadapkan pada suatu masalah, berpikir "Saya tahu, saya akan menggunakan ekspresi reguler." Sekarang mereka punya dua masalah. (entri blog yang ditulis olehpendiri Stack Overflow ) *
- Jangan gunakan regex untuk mengurai HTML:
- Jangan .
- Yah, mungkin ... jika Anda benar - benar bertekad (jawaban lain dalam pertanyaan ini juga bagus)
- Jangan .
Contoh regex yang dapat menyebabkan mesin regex gagal
Alat: Penguji dan Penjelas
(Bagian ini berisi tautan non-Stack Overflow.)
Online (* termasuk penguji pengganti, + termasuk penguji terpisah) :
- Debuggex (Juga memiliki gudang regex yang berguna) javascript , python , pcre
- * Ekspresi Reguler 101 php , pcre , python , javascript
- Regex Pal , javascript regular-expressions.info
- 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 dan POSIX, javascript
regex.larsolavtorvik.com
- Putar ulang javascript ruby .net
Offline:
- Microsoft Windows: RegexBuddy (analisis), RegexMagic (pembuatan), Expresso (analisis, pembuatan, gratis)