EnglishFrenchSpanyol

Favicon OnWorks

perlrecharclass - Dalam talian dalam Awan

Jalankan perlrecharclass dalam penyedia pengehosan percuma OnWorks melalui Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

Ini ialah perintah perlrecharclass yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.

JADUAL:

NAMA


perlrecharclass - Kelas Watak Ungkapan Biasa Perl

DESCRIPTION


Dokumentasi peringkat atas tentang ungkapan biasa Perl ditemui dalam perlre.

Halaman manual ini membincangkan sintaks dan penggunaan kelas aksara dalam Perl biasa
ungkapan.

Kelas watak ialah satu cara untuk menandakan satu set aksara dengan cara sedemikian
watak set dipadankan. Adalah penting untuk diingat bahawa: memadankan watak
kelas menggunakan tepat satu aksara dalam rentetan sumber. (Rentetan sumber ialah
rentetan ungkapan biasa dipadankan dengan.)

Terdapat tiga jenis kelas aksara dalam ungkapan biasa Perl: titik, garis miring ke belakang
urutan, dan bentuk yang disertakan dalam kurungan segi empat sama. Perlu diingat, walaupun, selalunya
istilah "kelas watak" digunakan untuk bermaksud hanya bentuk kurungan. Sudah tentu, kebanyakan Perl
dokumentasi melakukannya.

. dot
Titik (atau noktah), "." mungkin yang paling banyak digunakan, dan pastinya yang paling terkenal
kelas watak. Secara lalai, titik sepadan dengan mana-mana aksara, kecuali baris baharu. Itu
lalai boleh ditukar untuk menambah padanan baris baharu dengan menggunakan tunggal selaras pengubah suai:
sama ada untuk keseluruhan ungkapan biasa dengan pengubah suai "/s", atau secara setempat dengan "(?s)".
(Urutan garis miring belakang "\N", yang diterangkan di bawah, sepadan dengan mana-mana aksara kecuali baris baharu
tanpa mengambil kira tunggal selaras pengubah suai.)

Berikut adalah beberapa contoh:

"a" =~ /./ # Padanan
"." =~ /./ # Padanan
"" =~ /./ # Tiada padanan (titik mesti sepadan dengan watak)
"\n" =~ /./ # Tiada padanan (titik tidak sepadan dengan baris baharu)
"\n" =~ /./s # Padanan (pengubah suai 'baris tunggal' global)
"\n" =~ /(?s:.)/ # Padanan (pengubah suai 'baris tunggal' setempat)
"ab" =~ /^.$/ # Tiada padanan (titik sepadan dengan satu aksara)

Tanda Belakang urutan
Jujukan garis miring ke belakang ialah jujukan aksara, yang pertama ialah satu garis miring ke belakang.
Perl memberikan makna istimewa kepada banyak urutan sedemikian, dan sebahagian daripadanya ialah watak
kelas. Iaitu, mereka memadankan satu watak setiap satu, dengan syarat watak itu dimiliki
kepada set aksara tertentu yang ditakrifkan oleh urutan.

Berikut ialah senarai jujukan garis miring ke belakang yang merupakan kelas aksara. Mereka dibincangkan
dengan lebih terperinci di bawah. (Untuk urutan garis miring belakang yang bukan kelas aksara, lihat
perlrebackslash.)

\d Padankan aksara digit perpuluhan.
\D Padankan aksara bukan digit perpuluhan.
\w Padankan aksara "perkataan".
\W Padankan aksara bukan "perkataan".
\s Padankan aksara ruang putih.
\S Padankan aksara bukan ruang putih.
\h Padankan aksara ruang putih mendatar.
\H Padankan aksara yang bukan ruang putih mendatar.
\v Padankan aksara ruang putih menegak.
\V Padankan aksara yang bukan ruang putih menegak.
\N Padankan watak yang bukan baris baharu.
\pP, \p{Prop} Padankan aksara yang mempunyai sifat Unicode yang diberikan.
\PP, \P{Prop} Padankan aksara yang tidak mempunyai sifat Unicode

\N

"\N", tersedia bermula dalam v5.12, seperti titik, sepadan dengan mana-mana aksara yang bukan a
baris baru. Perbezaannya ialah "\N" tidak dipengaruhi oleh tunggal selaras kerap
pengubah suai ungkapan (lihat "Titik" di atas). Ambil perhatian bahawa bentuk "\N{...}" mungkin bermakna
sesuatu yang berbeza sama sekali. Apabila "{...}" ialah pengkuantiti, ia bermaksud memadankan a
watak bukan baris baru yang berkali-kali. Contohnya, "\N{3}" bermaksud memadankan 3 bukan-
baris baharu; "\N{5,}" bermaksud memadankan 5 atau lebih bukan baris baharu. Tetapi jika "{...}" bukan undang-undang
pengkuantiti, ia dianggap sebagai watak bernama. Lihat nama azimat untuk mereka. Untuk
contoh, tiada satu pun daripada "\N{COLON}", "\N{4F}", dan "\N{F4}" mengandungi pengkuantiti undang-undang, jadi Perl
akan cuba mencari aksara yang namanya masing-masing "COLON", "4F", dan "F4".

Digit

"\d" sepadan dengan satu aksara yang dianggap sebagai perpuluhan digit. Jika "/a" biasa
pengubah suai ungkapan sedang berkuat kuasa, ia sepadan dengan [0-9]. Jika tidak, ia sepadan dengan apa sahaja
dipadankan dengan "\p{Digit}", yang merangkumi [0-9]. (Pengecualian yang tidak mungkin adalah itu
di bawah peraturan padanan setempat, tempat semasa mungkin tidak mempunyai "[0-9]" dipadankan dengan "\d",
dan/atau mungkin sepadan dengan aksara lain yang titik kodnya kurang daripada 256. Satu-satunya yang sedemikian
takrifan setempat yang sah adalah sepadan dengan "[0-9]" ditambah satu set lagi 10
aksara digit berturut-turut; apa-apa lagi akan melanggar bahasa C
standard, tetapi Perl pada masa ini tidak menganggap apa-apa mengenai perkara ini.)

Maksudnya ialah melainkan pengubah "/a" berkuat kuasa "\d" bukan sahaja sepadan dengan
digit '0' - '9', tetapi juga bahasa Arab, Devanagari dan digit daripada bahasa lain. Ini mungkin
menyebabkan beberapa kekeliruan, dan beberapa isu keselamatan.

Beberapa digit yang "\d" sepadan kelihatan seperti beberapa digit [0-9], tetapi mempunyai nilai yang berbeza.
Sebagai contoh, BENGALI DIGIT EMPAT (U+09EA) kelihatan sangat mirip ASCII DIGIT LAPAN
(U+0038). Aplikasi yang hanya menjangkakan digit ASCII mungkin tersilap, atau jika
padanannya ialah "\d+", rentetan yang dipadankan mungkin mengandungi campuran digit daripada yang berbeza
sistem penulisan yang kelihatan seperti ia menandakan nombor yang berbeza daripada yang sebenarnya.
"num()" dalam Unicode::UCD boleh digunakan untuk mengira nilai dengan selamat, mengembalikan "undef" jika
rentetan input mengandungi campuran sedemikian.

Maksud "\p{Digit}" (dan oleh itu "\d" kecuali di bawah pengubah "/a") ialah
"\p{General_Category=Nombor_Perpuluhan}", atau secara sinonim, "\p{General_Category=Digit}".
Bermula dengan Unicode versi 4.1, ini adalah set aksara yang sama dipadankan dengan
"\p{Numeric_Type=Desimal}". Tetapi Unicode juga mempunyai sifat yang berbeza dengan yang serupa
nama, "\p{Numeric_Type=Digit}", yang sepadan dengan set aksara yang berbeza sama sekali.
Watak-watak ini ialah perkara seperti "SIRCLED DIGIT SATU" atau subskrip, atau daripada tulisan
sistem yang kekurangan semua sepuluh digit.

Niat reka bentuk adalah untuk "\d" betul-betul sepadan dengan set aksara yang boleh dilakukan dengan selamat
digunakan dengan sintaks perpuluhan kedudukan besar-endian "biasa", di mana, contohnya 123 bermaksud satu
'seratus', tambah dua 'sepuluh', tambah tiga 'satu'. Notasi kedudukan ini tidak
semestinya digunakan pada aksara yang sepadan dengan jenis "digit" yang lain,
"\p{Numeric_Type=Digit}", dan seterusnya "\d" tidak sepadan dengannya.

Digit Tamil (U+0BE6 - U+0BEF) juga boleh digunakan secara sah dalam nombor Tamil gaya lama dalam
yang mana mereka akan muncul tidak lebih daripada satu berturut-turut, dipisahkan oleh aksara yang bermaksud
"kali 10", "kali 100", dll. (Lihathttp://www.unicode.org/notes/tn21>.)

Mana-mana aksara yang tidak dipadankan dengan "\d" dipadankan dengan "\D".

Perkataan aksara

"\w" sepadan dengan satu aksara abjad angka (aksara abjad, atau perpuluhan
digit); atau aksara tanda baca penghubung, seperti garis bawah ("_"); atau "tanda"
watak (seperti sejenis loghat) yang melekat pada salah satu daripadanya. Ia tidak sepadan dengan a
keseluruhan perkataan. Untuk memadankan keseluruhan perkataan, gunakan "\w+". Ini bukan perkara yang sama seperti memadankan an
Perkataan Inggeris, tetapi dalam julat ASCII ia adalah sama dengan rentetan pengecam Perl
watak-watak.

Jika pengubah suai "/a" berkuat kuasa ...
"\w" sepadan dengan 63 aksara [a-zA-Z0-9_].

kalau tidak...
Untuk mata kod di atas 255 ...
"\w" padanan sama dengan padanan "\p{Word}" dalam julat ini. Iaitu, ia sepadan
Huruf Thai, huruf Yunani, dsb. Ini termasuk tanda baca penyambung (seperti
garis bawah) yang menghubungkan dua perkataan bersama, atau diakritik, seperti "GABUNGAN
TILDE" dan huruf pengubah suai, yang biasanya digunakan untuk menambah tambahan
tanda kepada huruf.

Untuk mata kod di bawah 256 ...
jika peraturan setempat berkuat kuasa...
"\w" sepadan dengan watak garis bawah asli platform ditambah apa sahaja
locale dianggap sebagai alfanumerik.

jika peraturan Unicode berkuat kuasa ...
"\w" sepadan dengan apa yang "\p{Word}" sepadan.

kalau tidak...
"\w" sepadan dengan [a-zA-Z0-9_].

Peraturan yang digunakan ditentukan seperti yang diterangkan dalam "Pengubah suai set aksara yang ada
kesan?" dalam perlre.

Terdapat beberapa isu keselamatan dengan senarai penuh Unicode aksara perkataan. Lihat
<http://unicode.org/reports/tr36>.

Juga, untuk set aksara yang lebih halus dalam bahasa pengaturcaraan
pengecam di luar julat ASCII, sebaliknya anda mungkin ingin menggunakan yang lebih tersuai
"Sifat Unicode", "\p{ID_Start}", "\p{ID_Continue}", "\p{XID_Start}", dan
"\p{XID_Teruskan}". Lihathttp://unicode.org/reports/tr31>.

Mana-mana aksara yang tidak dipadankan dengan "\w" dipadankan dengan "\W".

Whitespace

"\s" sepadan dengan mana-mana aksara tunggal yang dianggap ruang putih.

Jika pengubah suai "/a" berkuat kuasa ...
Dalam semua versi Perl, "\s" sepadan dengan 5 aksara [\t\n\f\r ]; iaitu
tab mendatar, baris baharu, suapan borang, pemulangan pengangkutan dan ruang.
Bermula dalam Perl v5.18, ia juga sepadan dengan tab menegak, "\cK". Lihat nota "[1]" di bawah
untuk perbincangan ini.

kalau tidak...
Untuk mata kod di atas 255 ...
"\s" sepadan dengan titik kod di atas 255 yang ditunjukkan dengan lajur "s" dalam
jadual di bawah.

Untuk mata kod di bawah 256 ...
jika peraturan setempat berkuat kuasa...
"\s" sepadan dengan apa sahaja tempat yang dianggap sebagai ruang putih.

jika peraturan Unicode berkuat kuasa ...
"\s" betul-betul sepadan dengan aksara yang ditunjukkan dengan lajur "s" dalam jadual
di bawah.

kalau tidak...
"\s" sepadan dengan [\t\n\f\r ] dan, bermula dalam Perl v5.18, tab menegak, "\cK".
(Lihat nota "[1]" di bawah untuk perbincangan tentang perkara ini.) Ambil perhatian bahawa senarai ini tidak
termasuk ruang yang tidak pecah.

Peraturan yang digunakan ditentukan seperti yang diterangkan dalam "Pengubah suai set aksara yang ada
kesan?" dalam perlre.

Mana-mana aksara yang tidak dipadankan dengan "\s" dipadankan dengan "\S".

"\h" sepadan dengan mana-mana aksara yang dianggap ruang putih mendatar; ini termasuk platform
ruang dan aksara tab dan beberapa lagi yang disenaraikan dalam jadual di bawah. "\H" sepadan dengan mana-mana
aksara tidak dianggap ruang putih mendatar. Mereka menggunakan watak asli platform
ditetapkan, dan jangan pertimbangkan mana-mana tempat yang mungkin sedang digunakan.

"\v" sepadan dengan mana-mana aksara yang dianggap ruang putih menegak; ini termasuk platform
carriage return dan aksara suapan baris (baris baharu) serta beberapa aksara lain, semuanya
disenaraikan dalam jadual di bawah. "\V" sepadan dengan mana-mana aksara yang tidak dianggap ruang putih menegak.
Mereka menggunakan set watak asli platform dan tidak mengambil kira sebarang tempat yang mungkin
jika tidak boleh digunakan.

"\R" sepadan dengan apa sahaja yang boleh dianggap sebagai baris baharu di bawah peraturan Unicode. Ia boleh memadankan a
urutan berbilang aksara. Ia tidak boleh digunakan dalam kelas aksara kurungan; gunakan "\v"
sebaliknya (ruang putih menegak). Ia menggunakan set watak asli platform, dan tidak
pertimbangkan mana-mana tempat yang mungkin sedang digunakan. Butiran dibincangkan dalam
perlrebackslash.

Ambil perhatian bahawa tidak seperti "\s" (dan "\d" dan "\w"), "\h" dan "\v" sentiasa sepadan dengan aksara yang sama,
tanpa mengambil kira faktor lain, seperti tempat yang aktif atau sama ada rentetan sumber adalah
dalam format UTF-8.

Seseorang mungkin berfikir bahawa "\s" adalah bersamaan dengan "[\h\v]". Ini memang benar bermula di Perl
v5.18, tetapi sebelum itu, satu-satunya perbezaan ialah tab menegak ("\cK") tidak
dipadankan dengan "\s".

Jadual berikut ialah senarai lengkap aksara yang dipadankan dengan "\s", "\h" dan "\v" sebagai
daripada Unicode 6.3.

Lajur pertama memberikan titik kod Unicode bagi aksara (dalam format hex), yang kedua
lajur memberikan nama (Unicode). Lajur ketiga menunjukkan kelas yang mana
aksara dipadankan (dengan andaian tiada tempat yang berkuat kuasa yang mengubah padanan "\s").

0x0009 TABULASI WATAH hs
0x000a LINE FEED (LF) lwn
0x000b TABULASI BARIS lwn [1]
0x000c SUAPAN BORANG (FF) lwn
0x000d CARRIAGE RETURN (CR) lwn
0x0020 SPACE hs
0x0085 NEXT LINE (NEL) lwn [2]
0x00a0 RUANG TANPA REHAT hs [2]
0x1680 OGHAM SPACE MARKAH hs
0x2000 EN QUAD hs
0x2001 EM QUAD hs
0x2002 EN SPACE hs
0x2003 EM SPACE hs
0x2004 RUANG TIGA PER-EM hs
0x2005 RUANG EMPAT PER-EM hs
0x2006 RUANG ENAM PER-EM hs
0x2007 RUANG RAJAH hs
0x2008 RUANG TANDA BACA hs
0x2009 RUANG NIPIS hs
0x200a RUANG RAMBUT hs
0x2028 LINE SEPARATOR lwn
0x2029 PARAGRAPH SEPARATOR lwn
0x202f RUANG TANPA PECAH SEMPIT hs
0x205f RUANG MATEMATIK SEDERHANA hs
0x3000 RUANG IDEOGRAFI hs

[1] Sebelum Perl v5.18, "\s" tidak sepadan dengan tab menegak. "[^\S\cK]" (tidak jelas)
sepadan dengan apa yang "\s" lakukan secara tradisional.

[2] BARIS SETERUSNYA dan RUANG TANPA BREAK mungkin atau mungkin tidak sepadan dengan "\s" bergantung pada peraturan dalam
kesan. Lihat permulaan bahagian ini.

Unicode Hartanah

"\pP" dan "\p{Prop}" ialah kelas aksara untuk memadankan aksara yang sesuai dengan Unicode yang diberikan
hartanah. Nama sifat satu huruf boleh digunakan dalam borang "\pP", dengan harta tersebut
nama mengikut "\p", jika tidak, pendakap diperlukan. Apabila menggunakan pendakap gigi, terdapat a
bentuk tunggal, iaitu hanya nama harta yang disertakan dalam pendakap, dan bentuk gabungan
yang kelihatan seperti "\p{name=value}", yang bermaksud untuk memadankan jika sifat "nama" untuk
watak mempunyai "nilai" tertentu itu. Sebagai contoh, padanan untuk nombor boleh ditulis
sebagai "/\pN/" atau sebagai "/\p{Nombor}/", atau sebagai "/\p{Number=True}/". Huruf kecil dipadankan
oleh harta itu Huruf kecil yang mempunyai bentuk pendek Ll. Mereka memerlukan pendakap gigi, begitu juga
ditulis sebagai "/\p{Ll}/" atau "/\p{Huruf_Kecil}/", atau
"/\p{General_Category=Lowercase_Letter}/" (garis bawah adalah pilihan). "/\pLl/" ialah
sah, tetapi bermakna sesuatu yang berbeza. Ia sepadan dengan rentetan dua aksara: surat
(Harta Unicode "\pL"), diikuti dengan huruf kecil "l".

Jika peraturan setempat tidak berkuat kuasa, penggunaan sifat Unicode akan memaksa peraturan tetap
ungkapan untuk menggunakan peraturan Unicode, jika belum.

Ambil perhatian bahawa hampir semua sifat kebal kepada padanan tidak sensitif huruf besar-besaran. Iaitu, menambah
pengubah suai ungkapan biasa "/i" tidak mengubah perkara yang dipadankan. Terdapat dua set
yang terjejas. Set pertama ialah "Huruf_Uppercase", "Huruf_kecil" dan
"Titlecase_Letter", kesemuanya sepadan dengan "Cased_Letter" di bawah "/i" padanan. Set kedua
ialah "Huruf Besar", "Huruf Kecil" dan "Huruf Tajuk", semuanya sepadan dengan "Berkas" di bawah "/i"
sepadan. (Perbezaan antara set ini ialah beberapa perkara, seperti angka Rom,
datang dalam kedua-dua huruf besar dan kecil, jadi ia adalah "Berkas", tetapi tidak dianggap sebagai
huruf, jadi ia bukan "Surat_Berkas". Mereka sebenarnya adalah "Nombor_Surat".) Set ini
juga termasuk subsetnya "PosixUpper" dan "PosixLower", kedua-duanya di bawah padanan "/i"
"PosixAlpha".

Untuk butiran lanjut tentang sifat Unicode, lihat "Sifat Aksara Unicode" dalam perlunicode;
untuk senarai lengkap sifat yang mungkin, lihat "Sifat boleh diakses melalui \p{} dan
\P{}" dalam perluniprops, yang menyatakan semua bentuk yang mempunyai perbezaan "/i". Ia juga
mungkin untuk menentukan sifat anda sendiri. Ini dibincangkan dalam "Watak Ditakrifkan Pengguna
Properties" dalam perlunicode.

Sifat Unicode ditakrifkan (mengejutkan!) hanya pada titik kod Unicode. Bermula dalam
v5.20, apabila memadankan dengan "\p" dan "\P", Perl merawat titik kod bukan Unikod (yang
melebihi maksimum Unicode undang-undang 0x10FFFF) seolah-olah ia adalah Unicode biasa yang tidak ditetapkan
mata kod.

Sebelum v5.20, Perl membangkitkan amaran dan membuat semua perlawanan gagal pada kod bukan Unicode
mata. Ini mungkin agak mengejutkan:

b.c(0x110000) =~ \p{ASCII_Hex_Digit=True} # Gagal pada Perls < v5.20.
b.c(0x110000) =~ \p{ASCII_Hex_Digit=False} # Juga gagal pada Perls
# < v5.20

Walaupun kedua-dua perlawanan ini mungkin dianggap sebagai pelengkap, sehingga v5.20 ia adalah begitu
hanya pada titik kod Unicode.

Contoh

"a" =~ /\w/ # Padankan, "a" ialah aksara 'perkataan'.
"7" =~ /\w/ # Padanan, "7" ialah aksara 'perkataan' juga.
"a" =~ /\d/ # Tiada padanan, "a" bukan digit.
"7" =~ /\d/ # Padanan, "7" ialah digit.
" " =~ /\s/ # Padankan, ruang ialah ruang putih.
"a" =~ /\D/ # Padanan, "a" ialah bukan digit.
"7" =~ /\D/ # Tiada padanan, "7" bukan bukan digit.
" " =~ /\S/ # Tiada padanan, ruang bukan bukan ruang putih.

" " =~ /\h/ # Padankan, ruang ialah ruang putih mendatar.
" " =~ /\v/ # Tiada padanan, ruang bukan ruang putih menegak.
"\r" =~ /\v/ # Padankan, pulangan ialah ruang putih menegak.

"a" =~ /\pL/ # Padankan, "a" ialah huruf.
"a" =~ /\p{Lu}/ # Tiada padanan, /\p{Lu}/ sepadan dengan huruf besar.

"\x{0e0b}" =~ /\p{Thai}/ # Padanan, \x{0e0b} ialah watak
# 'WATAK THAI BEGITU', dan begitulah
# Kelas Unicode Thai.
"a" =~ /\P{Lao}/ # Padankan, kerana "a" bukan watak Laos.

Perlu ditekankan bahawa "\d", "\w", dll, sepadan dengan aksara tunggal, tidak lengkap
nombor atau perkataan. Untuk memadankan nombor (yang terdiri daripada digit), gunakan "\d+"; untuk memadankan perkataan,
gunakan "\w+". Tetapi sedar tentang pertimbangan keselamatan dalam berbuat demikian, seperti yang dinyatakan di atas.

Berkurung Watak kelas
Bentuk kelas aksara ketiga yang boleh anda gunakan dalam ungkapan biasa Perl ialah kurungan
kelas watak. Dalam bentuk yang paling mudah, ia menyenaraikan aksara yang mungkin dipadankan,
dikelilingi oleh kurungan segi empat sama, seperti ini: "[aeiou]". Ini sepadan dengan salah satu daripada "a", "e", "i",
"o" atau "u". Seperti kelas aksara yang lain, tepat satu aksara dipadankan.* Untuk dipadankan
rentetan yang lebih panjang yang terdiri daripada aksara yang disebut dalam kelas aksara, ikuti
kelas watak dengan pengkuantiti. Contohnya, "[aeiou]+" sepadan dengan satu atau lebih huruf kecil
vokal Inggeris.

Mengulang aksara dalam kelas aksara tidak mempunyai kesan; ia dianggap dalam set
hanya sekali.

Contoh:

"e" =~ /[aeiou]/ # Padankan, kerana "e" disenaraikan dalam kelas.
"p" =~ /[aeiou]/ # Tiada padanan, "p" tidak disenaraikan dalam kelas.
"ae" =~ /^[aeiou]$/ # Tiada padanan, kelas aksara hanya sepadan
# satu watak.
"ae" =~ /^[aeiou]+$/ # Padanan, disebabkan pengkuantiti.

-------

* Terdapat dua pengecualian kepada kelas aksara kurungan yang sepadan dengan satu aksara
sahaja. Setiap satu memerlukan pengendalian khas oleh Perl untuk membuat sesuatu berfungsi:

· Apabila kelas adalah untuk memadankan tanpa huruf di bawah peraturan padanan "/i", dan watak yang
disebut secara eksplisit di dalam kelas sepadan dengan jujukan berbilang aksara
tanpa sebab di bawah peraturan Unicode, kelas juga akan sepadan dengan jujukan itu. Sebagai contoh,
Unicode mengatakan bahawa huruf "LATIN SMALL LETTER SHARP S" harus sepadan dengan jujukan
"ss" di bawah peraturan "/i". Oleh itu,

'ss' =~ /\A\N{HURUF KECIL LATIN TAJAM S}\z/i # Padanan
'ss' =~ /\A[aeioust\N{HURUF KECIL LATIN TAJAM S}]\z/i # Padanan

Untuk ini berlaku, kelas tidak boleh diterbalikkan (lihat "Negasi") dan aksara
mesti dinyatakan secara eksplisit dan bukan sebahagian daripada julat berbilang aksara (walaupun sebagai
salah satu titik akhirnya). ("Julat Watak" akan diterangkan sebentar lagi.) Oleh itu,

'ss' =~ /\A[\0-\x{ff}]\z/ui # Tidak sepadan
'ss' =~ /\A[\0-\N{HURUF KECIL LATIN TAJAM S}]\z/ui # Tiada padanan
'ss' =~ /\A[\xDF-\xDF]\z/ui # Padanan pada platform ASCII, sejak
# \xDF ialah HURUF KECIL LATIN SHARP S,
# dan julatnya hanyalah satu
# elemen

Ambil perhatian bahawa adalah bukan idea yang baik untuk menentukan jenis julat ini juga.

· Sesetengah nama yang dikenali sebagai "\N{...}" merujuk kepada jujukan berbilang aksara, bukannya
watak tunggal biasa. Apabila salah satu daripada ini dimasukkan ke dalam kelas, keseluruhannya
urutan dipadankan. Sebagai contoh,

"\N{HURUF TAMIL KA}\N{TANDA VOKAL TAMIL AU}"
=~ / ^ [\N{SUKU KATA TAMIL KAU}] $ /x;

padanan, kerana "\N{SUKU KATA TAMIL KAU}" ialah urutan bernama yang terdiri daripada dua
aksara dipadankan dengan. Seperti contoh lain di mana kelas kurungan boleh dipadankan
berbilang aksara, dan atas sebab yang sama, kelas tidak boleh diterbalikkan, dan
jujukan yang dinamakan mungkin tidak muncul dalam julat, malah satu julat di mana ia adalah kedua-dua titik akhir. Jika
ini berlaku, ia adalah ralat maut jika kelas aksara berada dalam tempoh lanjutan
"(?[...])" kelas; dan hanya titik kod pertama digunakan (dengan amaran jenis "regexp".
dibangkitkan) sebaliknya.

khas Aksara Dalam a Berkurung Watak Kelas

Kebanyakan aksara yang merupakan aksara meta dalam ungkapan biasa (iaitu, aksara yang
membawa makna istimewa seperti ".", "*", atau "(") kehilangan makna istimewanya dan boleh digunakan
dalam kelas watak tanpa perlu melarikan diri daripada mereka. Sebagai contoh, "[()]" sepadan
sama ada kurungan pembuka, atau kurungan penutup, dan kurungan di dalam
kelas watak jangan kumpulkan atau tangkap.

Aksara yang mungkin membawa maksud istimewa dalam kelas aksara ialah: "\", "^", "-",
"[" dan "]", dan dibincangkan di bawah. Mereka boleh melarikan diri dengan garis miring ke belakang, walaupun ini
kadangkala tidak diperlukan, dalam kes ini, garis miring ke belakang boleh diabaikan.

Urutan "\b" adalah istimewa dalam kelas aksara kurungan. Semasa di luar
kelas aksara, "\b" ialah penegasan yang menunjukkan titik yang tidak mempunyai mana-mana dua
aksara perkataan atau dua aksara bukan perkataan pada kedua-dua sisi, di dalam aksara berkurung
kelas, "\b" sepadan dengan aksara ruang belakang.

Urutan "\a", "\c", "\e", "\f", "\n", "\N{NAMA}", "\N{U+heks watak}", "\r", "\t", dan
"\x" juga istimewa dan mempunyai maksud yang sama seperti di luar aksara yang dikurung
kelas.

Selain itu, garis miring ke belakang diikuti dengan dua atau tiga digit perlapanan dianggap sebagai nombor perlapanan.

"[" bukan istimewa dalam kelas aksara, melainkan ia adalah permulaan aksara POSIX
kelas (lihat "Kelas Aksara POSIX" di bawah). Ia biasanya tidak perlu melarikan diri.

"]" biasanya sama ada penghujung kelas aksara POSIX (lihat "Kelas Aksara POSIX"
di bawah), atau ia menandakan tamatnya kelas aksara dalam kurungan. Jika anda ingin memasukkan a
"]" dalam set aksara, anda mesti melarikan diri secara amnya.

Walau bagaimanapun, jika "]" ialah pertama (atau yang kedua jika aksara pertama ialah karet)
watak kelas aksara dalam kurungan, ia tidak menunjukkan penghujung kelas (seperti yang anda
tidak boleh mempunyai kelas kosong) dan dianggap sebagai sebahagian daripada set aksara yang boleh
dipadankan tanpa melarikan diri.

Contoh:

"+" =~ /[+?*]/ # Padanan, "+" dalam kelas aksara bukanlah istimewa.
"\cH" =~ /[\b]/ # Padankan, \b dalam dalam kelas aksara
# adalah bersamaan dengan ruang belakang.
"]" =~ /[][]/ # Padankan, kerana kelas aksara mengandungi
# kedua-duanya dan ].
"[]" =~ /[[]]/ # Padanan, corak mengandungi kelas aksara
# mengandungi hanya [, dan kelas aksara ialah
# diikuti oleh ].

Watak Banjaran

Ia bukan perkara biasa untuk memadankan pelbagai watak. Nasib baik, bukannya menyenaraikan semua
aksara dalam julat, seseorang boleh menggunakan tanda sempang ("-"). Jika di dalam watak kurungan
kelas anda mempunyai dua aksara yang dipisahkan oleh tanda sempang, ia dianggap seolah-olah semua aksara
antara mereka berdua berada di dalam kelas. Sebagai contoh, "[0-9]" sepadan dengan mana-mana digit ASCII, dan
"[am]" sepadan dengan mana-mana huruf kecil daripada separuh pertama abjad ASCII.

Ambil perhatian bahawa dua aksara pada kedua-dua belah tanda sempang tidak semestinya kedua-dua huruf
atau kedua-dua digit. Sebarang watak boleh dilakukan, walaupun tidak digalakkan. "['-?]" mengandungi a
julat watak, tetapi kebanyakan orang tidak akan tahu watak yang dimaksudkan.
Tambahan pula, julat sedemikian boleh membawa kepada masalah mudah alih jika kod perlu dijalankan pada a
platform yang menggunakan set aksara yang berbeza, seperti EBCDIC.

Jika tanda sempang dalam kelas aksara tidak boleh secara sintaksis menjadi sebahagian daripada julat, contohnya
kerana ia adalah watak pertama atau terakhir kelas watak, atau jika ia serta-merta
mengikut julat, sempang itu tidak istimewa, dan oleh itu dianggap sebagai watak untuk dipadankan
secara literal. Jika anda mahu tanda sempang dalam set aksara anda dipadankan dan kedudukannya
dalam kelas adalah sedemikian rupa sehingga ia boleh dianggap sebagai sebahagian daripada julat, anda mesti mengelakkannya
tanda sempang dengan sengkang ke belakang.

Contoh:

[az] # Memadankan aksara yang merupakan huruf kecil ASCII.
[a-fz] # Memadankan mana-mana huruf antara 'a' dan 'f' (termasuk) atau
# huruf 'z'.
[-z] # Padan sama ada tanda sempang ('-') atau huruf 'z'.
[afm] # Memadankan mana-mana huruf antara 'a' dan 'f' (termasuk), the
# sempang ('-'), atau huruf 'm'.
['-?] # Padan dengan mana-mana aksara '()*+,-./0123456789:;<=>?
# (Tetapi bukan pada platform EBCDIC).
[\N{APOSTROF}-\N{TANDA SOALAN}]
# Padan dengan mana-mana aksara '()*+,-./0123456789:;<=>?
# walaupun pada platform EBCDIC.
[\N{U+27}-\N{U+3F}] # Sama. (U+27 ialah "'", dan U+3F ialah "?")

Seperti yang ditunjukkan oleh dua contoh terakhir di atas, anda boleh mencapai mudah alih kepada platform bukan ASCII dengan
menggunakan borang "\N{...}" untuk titik akhir julat. Ini menunjukkan bahawa julat yang ditentukan
akan ditafsirkan menggunakan nilai Unicode, jadi "[\N{U+27}-\N{U+3F}]" bermaksud sepadan
"\N{U+27}", "\N{U+28}", "\N{U+29}", ..., "\N{U+3D}", "\N{U+ 3E}", dan "\N{U+3F}", apa sahaja
versi titik kod asli untuk mereka ialah. Ini dipanggil julat "Unicode". Jika
mana-mana hujung adalah daripada bentuk "\N{...}", julat itu dianggap Unicode. Amaran "regexp".
dinaikkan di bawah "penggunaan 'ketat'" jika titik akhir yang lain ditentukan bukan mudah alih:

[\N{U+00}-\x09] # Amaran di bawah 'ketat' semula; \x09 bukan mudah alih
[\N{U+00}-\t] # Tiada amaran;

Kedua-dua di atas sepadan dengan aksara "\N{U+00}" "\N{U+01}", ... "\N{U+08}", "\N{U+09}",
tetapi "\x09" nampaknya ia mungkin satu kesilapan jadi amaran dinaikkan (di bawah "re
'ketat'") untuk itu.

Perl juga menjamin bahawa julat "AZ", "az", "0-9", dan mana-mana subjulat ini sepadan
apa yang diharapkan oleh penutur bahasa Inggeris sahaja untuk dipadankan pada mana-mana platform. Iaitu, "[AZ]"
sepadan dengan 26 huruf besar ASCII; "[az]" sepadan dengan 26 huruf kecil; dan
"[0-9]" sepadan dengan 10 digit. Subjulat, seperti "[hk]", sepadan dengan sepadan, dalam ini
kes hanya empat huruf "h", "i", "j", dan "k". Ini adalah tingkah laku semula jadi pada ASCII
platform di mana titik kod (nilai ordinal) untuk "h" hingga "k" adalah berturut-turut
integer (0x68 hingga 0x6B). Tetapi pengendalian khas untuk mencapai ini mungkin diperlukan pada
platform dengan set aksara asli bukan ASCII. Sebagai contoh, pada platform EBCDIC,
titik kod untuk "h" ialah 0x88, "i" ialah 0x89, "j" ialah 0x91 dan "k" ialah 0x92. Perl khasnya
merawat "[hk]" untuk mengecualikan tujuh titik kod dalam jurang: 0x8A hingga 0x90. ini
pengendalian khas hanya digunakan apabila julat adalah subjulat daripada salah satu ASCII
julat huruf besar, huruf kecil dan digit, DAN setiap hujung julat dinyatakan sama ada sebagai a
literal, seperti "A", atau sebagai aksara bernama ("\N{...}", termasuk bentuk "\N{U+...").

Contoh EBCDIC:

[ij] # Padanan sama ada "i" atau "j"
[i-\N{HURUF KECIL LATIN J}] # Sama
[i-\N{U+6A}] # Sama
[\N{U+69}-\N{U+6A}] # Sama
[\x{89}-\x{91}] # Padanan 0x89 ("i"), 0x8A .. 0x90, 0x91 ("j")
[i-\x{91}] # Sama
[\x{89}-j] # Sama
[iJ] # Padanan, 0x89 ("i") .. 0xC1 ("J"); istimewa
# pengendalian tidak terpakai kerana julat bercampur
# kes

Penafian

Ia juga mungkin untuk menyenaraikan watak yang anda tidak mahu padankan. Anda boleh berbuat demikian
dengan menggunakan karet ("^") sebagai aksara pertama dalam kelas aksara. Sebagai contoh,
"[^az]" sepadan dengan mana-mana aksara yang bukan huruf kecil ASCII, oleh itu
termasuk lebih daripada sejuta mata kod Unicode. Kelas tersebut dikatakan "dinafikan" atau
"terbalik".

Sintaks ini menjadikan karet sebagai watak istimewa di dalam kelas aksara kurungan, tetapi
hanya jika ia adalah watak pertama kelas. Jadi jika anda mahu karet sebagai salah satu
aksara untuk dipadankan, sama ada melarikan diri daripada karet atau jangan senaraikannya dahulu.

Dalam kelas aksara kurungan terbalik, Perl mengabaikan peraturan Unicode yang biasanya disebut
jujukan yang dinamakan itu, dan aksara tertentu harus sepadan dengan jujukan berbilang aksara
gunakan di bawah padanan "/i" tanpa huruf besar. Mematuhi peraturan tersebut boleh menyebabkan sangat mengelirukan
situasi:

"ss" =~ /^[^\xDF]+$/ui; # Perlawanan!

Ini sepatutnya sepadan dengan mana-mana jujukan aksara yang bukan "\xDF" atau "\xDF" yang sepadan
di bawah "/i". "s" bukan "\xDF", tetapi Unicode mengatakan bahawa "ss" ialah "\xDF" padanan di bawah
"/i". Jadi yang mana satu "menang"? Adakah anda gagal dalam perlawanan kerana rentetan mempunyai "ss" atau menerimanya
kerana ia mempunyai "s" diikuti dengan "s" yang lain? Perl telah memilih yang terakhir. (Lihat nota dalam
"Kelas Watak Berkurung" di atas.)

Contoh:

"e" =~ /[^aeiou]/ # Tiada padanan, 'e' disenaraikan.
"x" =~ /[^aeiou]/ # Padankan, kerana 'x' bukan vokal huruf kecil.
"^" =~ /[^^]/ # Tiada padanan, sepadan dengan apa-apa sahaja yang bukan karet.
"^" =~ /[x^]/ # Padanan, karet tidak istimewa di sini.

Tanda Belakang Urutan

Anda boleh meletakkan sebarang kelas aksara jujukan garis miring ke belakang (kecuali "\N" dan "\R")
dalam kelas aksara kurungan, dan ia akan bertindak seolah-olah anda telah meletakkan semua aksara
dipadankan dengan jujukan garis miring ke belakang dalam kelas aksara. Contohnya, "[af\d]"
sepadan dengan mana-mana digit perpuluhan, atau mana-mana huruf kecil antara 'a' dan 'f' inklusif.

"\N" dalam kelas aksara kurungan mestilah daripada bentuk "\N{nama}" atau "\N{U+heks
watak}", dan BUKAN bentuk yang sepadan dengan bukan baris baharu, atas sebab yang sama seperti titik "."
dalam kelas aksara kurungan kehilangan makna istimewanya: ia sepadan dengan hampir semua perkara,
yang secara amnya bukan perkara yang anda mahu berlaku.

Contoh:

/[\p{Thai}\d]/ # Padan dengan watak yang sama ada seorang Thai
# aksara, atau satu digit.
/[^\p{Arab}()]/ # Padan dengan aksara yang bukan bahasa Arab
# aksara, mahupun kurungan.

Kelas aksara jujukan garis miring ke belakang tidak boleh membentuk salah satu daripada titik akhir julat. Oleh itu,
anda tidak boleh berkata:

/[\p{Thai}-\d]/ # Salah!

POSIX Watak kelas

Kelas aksara POSIX mempunyai bentuk "[:class:]", di mana kelas ialah nama, dan "[:"
dan pembatas ":]". Kelas aksara POSIX hanya muncul di dalam watak dalam kurungan
kelas, dan merupakan cara yang mudah dan deskriptif untuk menyenaraikan sekumpulan watak.

Berhati-hati dengan sintaks,

# Betul:
$string =~ /[[:alpha:]]/

# Salah (akan memberi amaran):
$string =~ /[:alpha:]/

Corak yang terakhir ialah kelas aksara yang terdiri daripada titik bertindih, dan huruf "a",
"l", "p" dan "h".

Kelas aksara POSIX boleh menjadi sebahagian daripada kelas aksara kurungan yang lebih besar. Sebagai contoh,

[01[:alpha:]%]

adalah sah dan sepadan dengan '0', '1', mana-mana aksara abjad dan tanda peratus.

Perl mengenali kelas aksara POSIX berikut:

alpha Sebarang aksara abjad ("[A-Za-z]").
alnum Sebarang aksara abjad angka ("[A-Za-z0-9]").
ascii Sebarang aksara dalam set aksara ASCII.
kosong Sambungan GNU, sama dengan ruang atau tab mendatar ("\t").
cntrl Sebarang aksara kawalan. Lihat Nota [2] di bawah.
digit Mana-mana digit perpuluhan ("[0-9]"), bersamaan dengan "\d".
graf Sebarang aksara yang boleh dicetak, tidak termasuk ruang. Lihat Nota [3] di bawah.
rendahkan Sebarang aksara kecil ("[az]").
cetak Sebarang aksara yang boleh dicetak, termasuk ruang. Lihat Nota [4] di bawah.
punct Mana-mana aksara grafik tidak termasuk aksara "perkataan". Nota [5].
ruang Sebarang aksara ruang putih. "\s" termasuk tab menegak
("\cK").
atas Sebarang aksara besar ("[AZ]").
perkataan A sambungan Perl ("[A-Za-z0-9_]"), bersamaan dengan "\w".
xdigit Mana-mana digit heksadesimal ("[0-9a-fA-F]").

Seperti sifat Unicode, kebanyakan sifat POSIX sepadan dengan yang sama tanpa mengira
sama ada padanan tidak sensitif huruf besar ("/i") berkuat kuasa atau tidak. Dua pengecualian adalah
"[:atas dan bawah:]". Di bawah "/i", mereka masing-masing sepadan dengan kesatuan "[:upper:]" dan
"[: bawah:]".

Kebanyakan kelas aksara POSIX mempunyai dua pasangan sifat "\p" gaya Unicode. (Mereka adalah
bukan sifat Unicode rasmi, tetapi sambungan Perl diperoleh daripada Unicode rasmi
properties.) Jadual di bawah menunjukkan hubungan antara kelas aksara POSIX dan ini
rakan-rakan.

Seorang rakan sejawatan, dalam lajur berlabel "Unikod julat ASCII" dalam jadual, sepadan sahaja
aksara dalam set aksara ASCII.

Rakan sejawatan yang lain, dalam lajur berlabel "Unikod julat penuh", sepadan dengan mana-mana
aksara yang sesuai dalam set aksara Unicode penuh. Contohnya, "\p{Alpha}"
sepadan bukan sahaja dengan aksara abjad ASCII, tetapi mana-mana aksara dalam keseluruhan Unicode
set aksara dianggap mengikut abjad. Entri dalam lajur berlabel "jujukan garis miring ke belakang"
adalah setara (pendek).

[[:...:]] Nota sengkang terbalik julat penuh ASCII
Urutan Unicode Unicode
-------------------------------------------------- ---
alfa \p{PosixAlpha} \p{XPosixAlpha}
alnum \p{PosixAlnum} \p{XPosixAlnum}
ascii \p{ASCII}
kosong \p{PosixBlank} \p{XPosixBlank} \h [1]
atau \p{HorizSpace} [1]
cntrl \p{PosixCntrl} \p{XPosixCntrl} [2]
digit \p{PosixDigit} \p{XPosixDigit} \d
graf \p{PosixGraph} \p{XPosixGraph} [3]
rendah \p{PosixLower} \p{XPosixLower}
cetak \p{PosixPrint} \p{XPosixPrint} [4]
punct \p{PosixPunct} \p{XPosixPunct} [5]
\p{PerlSpace} \p{XPerlSpace} \s [6]
angkasa \p{PosixSpace} \p{XPosixSpace} [6]
atas \p{PosixUpper} \p{XPosixUpper}
perkataan \p{PosixWord} \p{XPosixWord} \w
xdigit \p{PosixXDigit} \p{XPosixXDigit}

[1] "\p{Kosong}" dan "\p{HorizSpace}" ialah sinonim.

[2] Aksara kawalan tidak menghasilkan output seperti itu, sebaliknya biasanya mengawal
terminal entah bagaimana: contohnya, newline dan backspace ialah aksara kawalan. Pada ASCII
platform, dalam julat ASCII, aksara yang titik kodnya adalah antara 0 dan 31
inklusif, ditambah 127 ("DEL") ialah aksara kawalan; pada platform EBCDIC, mereka
rakan sejawat adalah watak kawalan.

[3] Mana-mana watak itu grafik, iaitu kelihatan. Kelas ini terdiri daripada semua
aksara abjad angka dan semua aksara tanda baca.

[4] Semua aksara yang boleh dicetak, iaitu set semua aksara grafik serta aksara tersebut
aksara ruang putih yang bukan juga kawalan.

[5] "\p{PosixPunct}" dan "[[:punct:]]" dalam julat ASCII sepadan dengan semua bukan kawalan, bukan-
abjad angka, aksara bukan ruang: "[-!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~]" (walaupun
jika tempat tempatan berkuat kuasa, ia boleh mengubah tingkah laku "[[:punct:]]").

Sifat yang dinamakan serupa, "\p{Punct}", sepadan dengan set yang agak berbeza dalam
Julat ASCII, iaitu "[-!"#%&'()*,./:;?@[\\\]_{}]". Iaitu, ia kehilangan sembilan
aksara "[$+<=>^`|~]". Ini kerana Unicode membahagikan apa yang dianggap oleh POSIX
tanda baca kepada dua kategori, Tanda Baca dan Simbol.

"\p{XPosixPunct}" dan (di bawah peraturan Unicode) "[[:punct:]]", sepadan dengan "\p{PosixPunct}"
sepadan dalam julat ASCII, serta "\p{Punct}" yang sepadan. Ini berbeza daripada
padanan dengan ketat mengikut "\p{Punct}". Satu lagi cara untuk mengatakannya ialah jika Unicode
peraturan berkuat kuasa, "[[:punct:]]" sepadan dengan semua aksara yang dianggap Unicode
tanda baca, serta semua aksara julat ASCII yang Unicode anggap sebagai simbol.

[6] "\p{XPerlSpace}" dan "\p{Space}" sepadan secara identik bermula dengan Perl v5.18. Dalam
versi terdahulu, ini berbeza hanya dalam padanan bukan tempatan, "\p{XPerlSpace}"
tidak sepadan dengan tab menegak, "\cK". Sama untuk dua bentuk julat ASCII sahaja.

Terdapat pelbagai sinonim lain yang boleh digunakan selain nama yang disenaraikan dalam jadual.
Contohnya, "\p{PosixAlpha}" boleh ditulis sebagai "\p{Alpha}". Semua disenaraikan dalam
"Sifat boleh diakses melalui \p{} dan \P{}" dalam perluniprops.

Kedua-dua rakan sejawat "\p" sentiasa menganggap peraturan Unicode berkuat kuasa. Pada platform ASCII,
ini bermakna mereka menganggap bahawa titik kod dari 128 hingga 255 adalah Latin-1, dan ini bermakna
bahawa penggunaannya di bawah peraturan setempat adalah tidak bijak melainkan tempat itu dijamin sebagai Latin-1
atau UTF-8. Sebaliknya, kelas aksara POSIX berguna di bawah peraturan setempat. mereka
dipengaruhi oleh peraturan sebenar yang berkuat kuasa, seperti berikut:

Jika pengubah suai "/a", berkuat kuasa ...
Setiap kelas POSIX sepadan dengan sama seperti kelas ASCII mereka.

kalau tidak...
Untuk mata kod di atas 255 ...
Kelas POSIX sepadan dengan yang sama dengan rakan sejawatan penuhnya.

Untuk mata kod di bawah 256 ...
jika peraturan setempat berkuat kuasa...
Kelas POSIX sepadan mengikut tempat, kecuali:

"perkataan"
juga termasuk watak garis bawah asli platform, tidak kira apa
tempatan adalah.

"ascii"
pada platform yang tidak mempunyai sambungan "ascii" POSIX, ini sepadan
hanya aksara julat ASCII asli platform.

"kosong"
pada platform yang tidak mempunyai sambungan "kosong" POSIX, ini sepadan
hanya tab asli platform dan aksara ruang.

jika peraturan Unicode berkuat kuasa ...
Kelas POSIX sepadan dengan yang sama dengan rakan sejawatan penuh.

kalau tidak...
Kelas POSIX sepadan dengan yang sama dengan rakan sejawat julat ASCII.

Peraturan yang digunakan ditentukan seperti yang diterangkan dalam "Pengubah suai set aksara yang ada
kesan?" dalam perlre.

Adalah dicadangkan untuk mengubah tingkah laku ini dalam keluaran Perl pada masa hadapan supaya sama ada atau tidak
Peraturan Unicode berkuat kuasa tidak akan mengubah tingkah laku: Di luar tempat, POSIX
kelas akan berkelakuan seperti rakan sejawatan ASCII mereka. Jika anda ingin mengulas tentang ini
cadangan, hantar e-mel kepada "[e-mel dilindungi]".

Penafian kelas aksara POSIX

Sambungan Perl kepada kelas aksara POSIX ialah keupayaan untuk menafikannya. Ini dilakukan oleh
memberi awalan nama kelas dengan karet ("^"). Beberapa contoh:

POSIX ASCII-julat penuh garis miring ke belakang
Urutan Unicode Unicode
-------------------------------------------------- ---
[[:^digit:]] \P{PosixDigit} \P{XPosixDigit} \D
[[:^space:]] \P{PosixSpace} \P{XPosixSpace}
\P{PerlSpace} \P{XPerlSpace} \S
[[:^word:]] \P{PerlWord} \P{XPosixWord} \W

Urutan garis miring ke belakang boleh bermakna sama ada ASCII atau Unicode Julat Penuh, bergantung pada pelbagai
faktor seperti yang diterangkan dalam "Pengubah suai set aksara yang manakah sedang berkuat kuasa?" dalam perlre.

[= =] dan [. .]

Perl mengenali kelas aksara POSIX "[=class=]" dan "[.class.]", tetapi tidak
(belum?) menyokong mereka. Sebarang percubaan untuk menggunakan sama ada binaan menimbulkan pengecualian.

Contoh

/[[:digit:]]/ # Padan dengan aksara yang merupakan digit.
/[01[:lower:]]/ # Padan dengan watak yang sama ada a
# huruf kecil, atau '0' atau '1'.
/[[:digit:][:^xdigit:]]/ # Padan dengan watak yang boleh menjadi apa sahaja
# kecuali huruf 'a' kepada 'f' dan 'A' kepada
# 'F'. Ini kerana watak utama
# kelas terdiri daripada dua aksara POSIX
# kelas yang OR disatukan, satu yang
# sepadan dengan mana-mana digit, dan yang lain itu
# sepadan dengan apa-apa sahaja yang bukan digit heks.
# ATAU menambah digit, meninggalkan hanya angka
# huruf 'a' kepada 'f' dan 'A' kepada 'F' dikecualikan.

Extended Berkurung Watak kelas

Ini ialah kelas watak kurungan mewah yang boleh digunakan untuk lebih mudah dibaca dan kurang
kelas yang terdedah kepada ralat, dan untuk melaksanakan operasi set, seperti persimpangan. Contohnya ialah

/(?[ \p{Bahasa Thai} & \p{Digit} ])/

Ini akan sepadan dengan semua aksara digit yang terdapat dalam skrip Thai.

Ini ialah ciri percubaan yang tersedia bermula pada 5.18, dan tertakluk kepada perubahan seperti yang kami lakukan
mendapatkan pengalaman lapangan dengannya. Sebarang percubaan untuk menggunakannya akan menimbulkan amaran, melainkan
dilumpuhkan melalui

tiada amaran "experimental::regex_sets";

Komen mengenai ciri ini dialu-alukan; hantar e-mel kepada "[e-mel dilindungi]".

Kita boleh memanjangkan contoh di atas:

/(?[ ( \p{Thai} + \p{Lao} ) & \p{Digit} ])/

Ini sepadan dengan digit yang sama ada dalam skrip Thai atau Laos.

Perhatikan ruang putih dalam contoh ini. Pembinaan ini sentiasa mempunyai pengubah suai "/x".
dihidupkan di dalamnya.

Pengendali binari yang tersedia ialah:

& persimpangan
+ kesatuan
| nama lain untuk '+', maka bermakna kesatuan
- penolakan (hasilnya sepadan dengan set yang terdiri daripada mereka
mata kod dipadankan dengan operan pertama, tidak termasuk mana-mana itu
juga dipadankan dengan operan kedua)
^ perbezaan simetri (kesatuan tolak persimpangan). ini
adalah seperti eksklusif atau, kerana hasilnya ialah set kod
mata yang dipadankan oleh salah satu, tetapi bukan kedua-duanya, daripada
operan.

Terdapat satu operator unary:

! pelengkap

Semua pengendali binari yang ditinggalkan bersekutu; "&" adalah keutamaan yang lebih tinggi daripada yang lain, yang mana
semua mempunyai keutamaan yang sama. Hak operator unary bersekutu, dan mempunyai tertinggi
keutamaan. Oleh itu, ini mengikut peraturan keutamaan Perl biasa untuk pengendali logik.
Gunakan kurungan untuk mengatasi keutamaan lalai dan perkaitan.

Sekatan utama ialah segala-galanya adalah metacharacter. Oleh itu, anda tidak boleh merujuk kepada
aksara tunggal dengan melakukan sesuatu seperti ini:

/(?[ a + b ])/ # Ralat sintaks!

Cara paling mudah untuk menentukan aksara boleh taip individu adalah dengan melampirkannya dalam kurungan:

/(?[ [a] + [b] ])/

(Ini adalah perkara yang sama seperti "[ab]".) Anda juga boleh mengatakan yang setara:

/(?[[ ab ]])/

(Anda boleh, sudah tentu, menentukan aksara tunggal dengan menggunakan, "\x{...}", "\N{...}", dsb.)

Contoh terakhir ini menunjukkan penggunaan binaan ini untuk menentukan kurungan biasa
kelas aksara tanpa operasi set tambahan. Perhatikan ruang putih di dalamnya; "/x"
dihidupkan walaupun dalam kelas aksara kurungan, kecuali anda tidak boleh mempunyai ulasan
dalam diri mereka. Oleh itu,

(?[ [#] ])

sepadan dengan aksara literal "#". Untuk menentukan aksara ruang putih literal, anda boleh
melarikan diri dengan garis miring ke belakang, seperti:

/(?[ [ aeiou \ ] ])/

Ini sepadan dengan vokal Inggeris ditambah dengan aksara SPACE. Semua pelarian lain diterima
oleh kelas aksara kurungan biasa diterima di sini juga; tetapi melarikan diri yang tidak dikenali
yang menjana amaran dalam kelas biasa adalah ralat maut di sini.

Semua amaran daripada elemen kelas ini adalah membawa maut, serta beberapa amalan yang tidak
pada masa ini memberi amaran. Sebagai contoh anda tidak boleh mengatakan

/(?[ [ \xF ] ])/ # Ralat sintaks!

Anda perlu mempunyai dua digit heks selepas "\x" tanpa kurung (gunakan sifar pendahuluan untuk membuat dua).
Sekatan ini adalah untuk mengurangkan insiden kesilapan menaip menyebabkan kelas tidak sepadan dengan apa
anda fikir ia akan berlaku.

Jika kelas aksara kurungan biasa mengandungi "\p{}" atau "\P{}" dan dipadankan dengan
titik bukan kod Unikod, amaran mungkin dibangkitkan, kerana hasilnya tidak ditentukan Unikod.
Tiada amaran sedemikian akan datang apabila menggunakan borang lanjutan ini.

Perbezaan terakhir antara kelas aksara kurungan biasa dan ini, adalah bahawa ia adalah
tidak mungkin untuk menjadikannya sepadan dengan lipatan berbilang aksara. Oleh itu,

/(?[ [\xDF] ])/iu

tidak sepadan dengan rentetan "ss".

Anda tidak perlu menyertakan nama kelas POSIX di dalam kurungan berganda, oleh itu kedua-duanya
kerja berikut:

/(?[ [:perkataan:] - [:bawah:] ])/
/(?[ [[:perkataan:]] - [[:bawah:]] ])/

Mana-mana kelas aksara POSIX yang terkandung, termasuk perkara seperti "\w" dan "\D" menghormati
"/a" (dan "/aa") pengubah suai.

"(?[ ])" ialah binaan regex-compile-time. Sebarang percubaan untuk menggunakan sesuatu yang tidak
boleh diketahui pada masa ungkapan biasa yang mengandungi disusun adalah ralat yang membawa maut. Dalam
amalan, ini bermakna hanya tiga batasan:

1. Konstruk ini tidak boleh digunakan dalam skop "use locale" (atau "/l" regex
pengubah suai).

2. Sebarang harta takrif pengguna yang digunakan mestilah sudah ditakrifkan pada masa biasa
ungkapan disusun (tetapi ambil perhatian bahawa konstruk ini boleh digunakan dan bukannya seperti itu
harta benda).

3. Ungkapan biasa yang sebaliknya akan disusun menggunakan peraturan "/d", dan yang digunakan
binaan ini sebaliknya akan menggunakan "/u". Oleh itu, binaan ini memberitahu Perl bahawa anda tidak
mahukan peraturan "/d" untuk keseluruhan ungkapan biasa yang mengandunginya.

Ambil perhatian bahawa melangkau ruang putih hanya digunakan pada bahagian dalam binaan ini. Mesti ada
tidak ada sebarang ruang antara mana-mana aksara yang membentuk huruf awal "(?[". Tidak boleh ada
menjadi ruang antara aksara "])" penutup.

Sama seperti dalam semua ungkapan biasa, corak boleh dibina dengan memasukkan pembolehubah
yang diinterpolasi pada masa penyusunan regex. Penjagaan mesti diambil untuk memastikan anda
mendapat apa yang anda harapkan. Sebagai contoh:

my $thai_or_lao = '\p{Thai} + \p{Lao}';
...
qr/(?[ \p{Digit} & $thai_or_lao ])/;

menyusun kepada

qr/(?[ \p{Digit} & \p{Thai} + \p{Lao} ])/;

Tetapi ini tidak mempunyai kesan yang mungkin dijangkakan oleh seseorang yang membaca kod tersebut, seperti
persimpangan hanya digunakan untuk "\p{Thai}", tidak termasuk Laos. Perangkap seperti ini
boleh dielakkan dengan menandakan bahagian komponen:

my $thai_or_lao = '( \p{Thai} + \p{Lao} )';

Tetapi sebarang pengubah suai masih akan digunakan untuk semua komponen:

my $lower = '\p{Lower} + \p{Digit}';
qr/(?[ \p{Greek} & $lower ])/i;

sepadan dengan perkara huruf besar. Anda boleh mengelakkan kejutan dengan membuat komponen menjadi
contoh binaan ini dengan menyusunnya:

my $thai_or_lao = qr/(?[ \p{Thai} + \p{Lao} ])/;
my $lower = qr/(?[ \p{Lower} + \p{Digit} ])/;

Apabila ini dibenamkan dalam corak lain, perkara yang dipadankan tidak akan berubah, tidak kira
kurungan atau pengubah suai yang berkuat kuasa dalam corak luar itu.

Disebabkan oleh cara Perl menghuraikan sesuatu, kurungan dan kurungan anda mungkin perlu
seimbang, malah termasuk komen. Jika anda menghadapi sebarang contoh, sila hantarkannya ke
"[e-mel dilindungi]", supaya kita boleh mempunyai contoh konkrit untuk halaman manusia ini.

Kami mungkin mengubahnya supaya perkara yang kekal digunakan secara sah dalam aksara kurungan biasa
kelas mungkin menjadi haram dalam binaan eksperimen ini. Satu cadangan, untuk
contohnya, adalah untuk melarang penggunaan bersebelahan dengan aksara yang sama, seperti dalam "(?[ [aa] ])". The
motivasi untuk perubahan sedemikian ialah penggunaan ini berkemungkinan salah taip, seperti yang ditambahkan oleh "a" kedua
apa-apa.

Gunakan perlrecharclass dalam talian menggunakan perkhidmatan onworks.net


Pelayan & Stesen Kerja Percuma

Muat turun apl Windows & Linux

Arahan Linux

Ad