Anda dapat menggunakan kelas karakter yang dinegasikan untuk mengecualikan karakter tertentu: misalnya [^abcde]akan cocok dengan apa pun kecuali karakter a, b, c, d, e.
Alih-alih menentukan semua karakter secara harfiah, Anda dapat menggunakan singkatan di dalam kelas karakter: [\w](huruf kecil) akan cocok dengan "karakter kata" (huruf, angka dan garis bawah), [\W](huruf besar) akan cocok dengan apa pun kecuali karakter kata; demikian pula, [\d]akan cocok dengan angka 0-9 sementara [\D]cocok dengan apapun kecuali angka 0-9, dan seterusnya.
Ada dua cara untuk mengatakan "jangan cocok": rentang karakter, dan lookahead / lookbehind negatif lebar-nol.
Mantan: tidak cocok a, b, catau 0:[^a-c0]
Yang terakhir: cocokkan string tiga huruf apa pun kecuali foodan bar:
(?!foo|bar).{3}
atau
.{3}(?<!foo|bar)
Juga, koreksi untuk Anda: *, ?dan +tidak benar-benar cocok apa-apa. Mereka adalah operator pengulangan, dan selalu mengikuti operator yang cocok. Dengan demikian, a+berarti mencocokkan satu atau lebih dari a, [a-c0]+berarti mencocokkan satu atau lebih dari a, b, catau 0, sementara [^a-c0]+akan mencocokkan satu atau lebih dari apa pun yang tidak a, b, catau 0.
Jawaban:
Anda dapat menggunakan kelas karakter yang dinegasikan untuk mengecualikan karakter tertentu: misalnya
[^abcde]
akan cocok dengan apa pun kecuali karakter a, b, c, d, e.Alih-alih menentukan semua karakter secara harfiah, Anda dapat menggunakan singkatan di dalam kelas karakter:
[\w]
(huruf kecil) akan cocok dengan "karakter kata" (huruf, angka dan garis bawah),[\W]
(huruf besar) akan cocok dengan apa pun kecuali karakter kata; demikian pula,[\d]
akan cocok dengan angka 0-9 sementara[\D]
cocok dengan apapun kecuali angka 0-9, dan seterusnya.Jika Anda menggunakan PHP, Anda dapat melihat dokumentasi kelas karakter regex .
sumber
Ada dua cara untuk mengatakan "jangan cocok": rentang karakter, dan lookahead / lookbehind negatif lebar-nol.
Mantan: tidak cocok
a
,b
,c
atau0
:[^a-c0]
Yang terakhir: cocokkan string tiga huruf apa pun kecuali
foo
danbar
:(?!foo|bar).{3}
atau
.{3}(?<!foo|bar)
Juga, koreksi untuk Anda:
*
,?
dan+
tidak benar-benar cocok apa-apa. Mereka adalah operator pengulangan, dan selalu mengikuti operator yang cocok. Dengan demikian,a+
berarti mencocokkan satu atau lebih daria
,[a-c0]+
berarti mencocokkan satu atau lebih daria
,b
,c
atau0
, sementara[^a-c0]+
akan mencocokkan satu atau lebih dari apa pun yang tidaka
,b
,c
atau0
.sumber
^((?!foo).)+$
Cocokkan baris mana pun yang tidak mengandung foo regex101.com/r/z6a65l/4[^]
(dalam [] ) adalah negasi dalam ekspresi reguler sedangkan^
"awal string"[^a-z]
cocok dengan karakter tunggal apa pun yang bukan dari "a" hingga "z"^[a-z]
artinya string dimulai dengan dari "a" hingga "z"Referensi
sumber
^
digunakan di awal rentang karakter, atau pernyataan lookahead / lookbehind negatif.>>> re.match('[^f]', 'foo') >>> re.match('[^f]', 'bar') <_sre.SRE_Match object at 0x7f8b102ad6b0> >>> re.match('(?!foo)...', 'foo') >>> re.match('(?!foo)...', 'bar') <_sre.SRE_Match object at 0x7f8b0fe70780>
sumber
?!
dalam 2 contoh terakhir atau dapatkah Anda menggunakannya!
sendiri? Apa yang?
dilakukan disana??
untuk memberi tahu bahwa itu adalah ekstensi. Mesin regex lain mungkin memiliki aturannya sendiri.