Ini ialah arahan pcre2test 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
pcre2test - program untuk menguji ungkapan biasa yang serasi dengan Perl.
SINOPSIS
pcre2test [pilihan] [input fail [pengeluaran fail]]
pcre2test ialah program ujian untuk pustaka ungkapan biasa PCRE2, tetapi ia juga boleh
digunakan untuk bereksperimen dengan ungkapan biasa. Dokumen ini menerangkan ciri-ciri
program ujian; untuk butiran ungkapan biasa itu sendiri, lihat pcre2pattern
dokumentasi. Untuk butiran tentang panggilan fungsi perpustakaan PCRE2 dan pilihannya, lihat bahagian
pcre2api dokumentasi.
Input untuk pcre2test ialah urutan corak ungkapan biasa dan rentetan subjek
untuk dipadankan. Terdapat juga baris arahan untuk menetapkan lalai dan mengawal beberapa
tindakan khas. Output menunjukkan keputusan setiap percubaan perlawanan. Pengubah suai pada luaran
atau baris arahan dalaman, corak dan baris subjek menentukan fungsi PCRE2
pilihan, mengawal bagaimana subjek diproses, dan output yang dihasilkan.
Apabila perpustakaan PCRE asal yang agak mudah berkembang, ia memperoleh banyak ciri yang berbeza,
dan akibatnya, yang asli ujian awal program berakhir dengan banyak pilihan dalam keadaan kucar-kacir,
sintaks misteri, untuk menguji semua ciri. Perpindahan ke API PCRE2 baharu menyediakan satu
peluang untuk melaksanakan semula program ujian sebagai pcre2test, dengan sintaks pengubah suai yang lebih bersih.
Namun begitu, masih terdapat banyak pengubah suai yang tidak jelas, beberapa daripadanya adalah khusus
direka untuk digunakan bersama dengan skrip ujian dan fail data yang diedarkan
sebagai sebahagian daripada PCRE2. Semua pengubah suai didokumenkan di sini, beberapa tanpa banyak justifikasi,
tetapi kebanyakannya tidak mungkin berguna kecuali apabila menguji perpustakaan.
PCRE2 8-BIT, 16-BIT DAN 32-BIT PERPUSTAKAAN
Versi pustaka PCRE2 yang berbeza boleh dibina untuk menyokong rentetan aksara yang
dikodkan dalam unit kod 8-bit, 16-bit atau 32-bit. Satu, dua atau ketiga-tiga perpustakaan ini
boleh dipasang serentak. The pcre2test program boleh digunakan untuk menguji semua
perpustakaan. Walau bagaimanapun, input dan outputnya sendiri sentiasa dalam format 8-bit. Apabila menguji
Pustaka, corak dan rentetan subjek 16-bit atau 32-bit ditukar kepada 16- atau 32-bit
format sebelum dihantar ke fungsi perpustakaan. Keputusan ditukar kembali kepada 8-bit
unit kod untuk output.
Dalam dokumen ini yang lain, nama fungsi dan struktur perpustakaan diberikan dalam
bentuk generik, contohnya, pcre_compile(). Nama sebenar yang digunakan di perpustakaan mempunyai a
akhiran _8, _16, atau _32, mengikut kesesuaian.
INPUT PENGEkodan
Input kepada pcre2test diproses baris demi baris, sama ada dengan memanggil perpustakaan C fgets ()
fungsi, atau melalui libreadline perpustakaan (lihat di bawah). Input diproses menggunakan menggunakan
Fungsi rentetan C, jadi tidak boleh mengandungi sifar binari, walaupun dalam seperti Unix
persekitaran, fgets () memperlakukan sebarang bait selain baris baharu sebagai aksara data. Di sesetengah
Watak persekitaran Windows 26 (hex 1A) menyebabkan fail tamat serta-merta, dan tidak lebih
data dibaca.
Untuk kemudahalihan maksimum, oleh itu, adalah paling selamat untuk mengelakkan aksara bukan pencetakan masuk
pcre2test fail input. Terdapat kemudahan untuk menentukan watak corak sebagai
pasangan heksadesimal, dengan itu memungkinkan untuk memasukkan sifar binari dalam corak untuk
tujuan pengujian. Baris subjek diproses untuk melarikan diri dengan garis miring ke belakang, yang menjadikannya
mungkin untuk memasukkan sebarang nilai data.
COMMAND LINE PILIHAN
-8 Jika perpustakaan 8-bit telah dibina, pilihan ini menyebabkan ia digunakan (ini ialah
lalai). Jika perpustakaan 8-bit belum dibina, pilihan ini menyebabkan
kesilapan.
-16 Jika perpustakaan 16-bit telah dibina, pilihan ini menyebabkan ia digunakan. Kalaulah
perpustakaan 16-bit telah dibina, ini adalah lalai. Jika perpustakaan 16-bit
belum dibina, pilihan ini menyebabkan ralat.
-32 Jika perpustakaan 32-bit telah dibina, pilihan ini menyebabkan ia digunakan. Kalaulah
perpustakaan 32-bit telah dibina, ini adalah lalai. Jika perpustakaan 32-bit
belum dibina, pilihan ini menyebabkan ralat.
-b Berkelakuan seolah-olah setiap corak mempunyai /fullbincode pengubahsuai; dalaman penuh
bentuk binari corak adalah output selepas penyusunan.
-C Keluarkan nombor versi pustaka PCRE2, dan semua maklumat yang tersedia
tentang ciri pilihan yang disertakan, dan kemudian keluar dengan keluar sifar
kod. Semua pilihan lain diabaikan.
-C pilihan Keluarkan maklumat tentang pilihan masa bina tertentu, kemudian keluar. ini
kefungsian bertujuan untuk digunakan dalam skrip seperti RunTest. Yang berikut
pilihan mengeluarkan nilai dan tetapkan kod keluar seperti yang ditunjukkan:
ebcdic-nl kod untuk LF (= NL) dalam persekitaran EBCDIC:
0x15 atau 0x25
0 jika digunakan dalam persekitaran ASCII
kod keluar sentiasa 0
saiz pautan saiz pautan dalaman yang dikonfigurasikan (2, 3, atau 4)
kod keluar ditetapkan kepada saiz pautan
baris baharu tetapan baris baharu lalai:
CR, LF, CRLF, ANYCRLF, atau ANY
kod keluar sentiasa 0
bsr tetapan lalai untuk apa yang \R sepadan:
ANYCRLF atau ANY
kod keluar sentiasa 0
Pilihan berikut mengeluarkan 1 untuk benar atau 0 untuk palsu, dan tetapkan kod keluar kepada
nilai yang sama:
backslash-C \C disokong (tidak dikunci)
ebcdic disusun untuk persekitaran EBCDIC
sokongan jit just-in-time tersedia
pcre2-16 perpustakaan 16-bit telah dibina
pcre2-32 perpustakaan 32-bit telah dibina
pcre2-8 perpustakaan 8-bit telah dibina
sokongan Unicode unicode tersedia
Jika pilihan yang tidak diketahui diberikan, mesej ralat dikeluarkan; kod keluar ialah 0.
-d Berkelakuan seolah-olah setiap corak mempunyai debug pengubahsuai; bentuk dalaman dan
maklumat tentang corak yang disusun adalah output selepas penyusunan; -d is
bersamaan dengan -b -i.
-dfa Berkelakuan seolah-olah setiap baris subjek mempunyai hari pengubahsuai; pemadanan dilakukan menggunakan
pcre2_dfa_match() fungsi dan bukannya lalai pcre2_match().
-membantu Keluarkan ringkasan ringkas pilihan ini dan kemudian keluar.
-i Berkelakuan seolah-olah setiap corak mempunyai /maklumat pengubahsuai; maklumat tentang yang disusun
corak diberikan selepas penyusunan.
-jit Berkelakuan seolah-olah setiap garis corak mempunyai jit pengubahsuai; selepas berjaya
kompilasi, setiap corak dihantar kepada pengkompil tepat dalam masa, jika tersedia.
-corak senarai pengubahsuai
Berkelakuan seolah-olah setiap garis corak mengandungi pengubah yang diberikan.
-q Jangan keluarkan nombor versi pcre2test pada permulaan pelaksanaan.
-S saiz Pada sistem seperti Unix, tetapkan saiz timbunan masa jalan kepada saiz megabait.
-subjek senarai pengubahsuai
Berkelakuan seolah-olah setiap baris subjek mengandungi pengubah yang diberikan.
-t Jalankan setiap kompilasi dan padankan berkali-kali dengan pemasa, dan keluarkan yang terhasil
kali setiap kompilasi atau padanan. Apabila JIT digunakan, masa yang berasingan diberikan untuk
kompilasi awal dan kompilasi JIT. Anda boleh mengawal bilangan lelaran
yang digunakan untuk pemasaan dengan mengikut -t dengan nombor (sebagai item berasingan pada
baris arahan). Sebagai contoh, "-t 1000" berulang 1000 kali. Lalainya ialah
berulang 500,000 kali.
-tm Ini seperti -t kecuali ia hanya masa fasa padanan, bukan penyusunan
fasa.
-T -TM Mereka ini berkelakuan seperti -t and -tm, tetapi sebagai tambahan, pada akhir larian, jumlah
masa untuk semua penyusunan dan padanan adalah output.
-turun Keluarkan nombor versi PCRE2 dan kemudian keluar.
DESCRIPTION
If pcre2test diberi dua argumen nama fail, ia membaca dari yang pertama dan menulis ke
kedua. Jika nama pertama ialah "-", input diambil daripada input standard. Jika pcre2test is
diberikan hanya satu hujah, ia membaca dari fail itu dan menulis ke stdout. Jika tidak, ia berbunyi
dari stdin dan menulis ke stdout.
Bila pcre2test dibina, pilihan konfigurasi boleh menentukan bahawa ia harus dipautkan dengan
yang libreadline or libedit perpustakaan. Apabila ini dilakukan, jika input adalah daripada terminal, ia
dibaca menggunakan readline() fungsi. Ini menyediakan kemudahan penyuntingan baris dan sejarah.
Keluaran daripada -membantu pilihan menyatakan sama ada atau tidak readline() akan digunakan.
Program ini mengendalikan sebarang bilangan ujian, setiap satunya terdiri daripada satu set baris input.
Setiap set bermula dengan corak ungkapan biasa, diikuti dengan sebarang bilangan baris subjek
untuk dipadankan dengan corak itu. Di antara set data ujian, baris arahan yang bermula
dengan # mungkin muncul. Format fail ini, dengan beberapa sekatan, juga boleh diproses oleh
perltest.sh skrip yang diedarkan dengan PCRE2 sebagai cara untuk menyemak bahawa
tingkah laku PCRE2 dan Perl adalah sama.
Apabila input adalah terminal, pcre2test gesaan untuk setiap baris input, menggunakan "re>" untuk
gesaan untuk corak ungkapan biasa, dan "data>" untuk menggesa baris subjek. Perintah
baris yang bermula dengan # boleh dimasukkan hanya sebagai tindak balas kepada gesaan "re>".
Setiap baris subjek dipadankan secara berasingan dan bebas. Jika anda ingin melakukan multi-line
padanan, anda perlu menggunakan \n urutan melarikan diri (atau \r atau \r\n, dsb., bergantung pada
tetapan baris baharu) dalam satu baris input untuk mengekod jujukan baris baharu. Tidak ada
had pada panjang baris subjek; penimbal input secara automatik dilanjutkan jika ia
terlalu kecil. Terdapat ciri replikasi yang memungkinkan untuk menjana panjang
pola berulang atau baris subjek tanpa perlu membekalkannya secara eksplisit.
Baris kosong atau penghujung fail menandakan penghujung baris subjek untuk ujian, di
yang menunjukkan corak atau baris arahan baharu dijangka jika masih terdapat input untuk dibaca.
COMMAND TALIAN
Di antara set data ujian, baris yang bermula dengan # ditafsirkan sebagai baris arahan.
Jika aksara pertama diikuti dengan ruang putih atau tanda seru, barisnya ialah
dianggap sebagai ulasan, dan diabaikan. Jika tidak, arahan berikut diiktiraf:
#forbid_utf
Corak seterusnya secara automatik mempunyai pilihan PCRE2_NEVER_UTF dan PCRE2_NEVER_UCP
set, yang mengunci penggunaan pilihan PCRE2_UTF dan PCRE2_UCP dan penggunaan (*UTF)
dan (*UCP) pada permulaan corak. Perintah ini juga memaksa ralat jika berikutnya
corak mengandungi sebarang kejadian \P, \p, atau \X, yang masih disokong apabila
PCRE2_UTF tidak ditetapkan, tetapi yang memerlukan sokongan sifat Unicode untuk disertakan dalam
perpustakaan.
Ini ialah pengawal pencetus yang digunakan dalam fail ujian untuk memastikan sifat UTF atau Unicode
ujian tidak ditambahkan secara tidak sengaja pada fail yang digunakan apabila sokongan Unicode tidak
dimasukkan ke dalam perpustakaan. Menetapkan PCRE2_NEVER_UTF dan PCRE2_NEVER_UCP sebagai lalai juga boleh
diperoleh dengan menggunakan #corak; bezanya ialah #forbid_utf tidak boleh dibatalkan,
dan pilihan automatik tidak dipaparkan dalam maklumat corak, untuk mengelakkan kekacauan
keluaran ujian.
#muat
Perintah ini digunakan untuk memuatkan satu set corak yang telah dikompilasi daripada fail, seperti yang diterangkan dalam
bahagian bertajuk "Menyimpan dan memulihkan corak yang disusun" di bawah.
#newline_default [ ]
Apabila PCRE2 dibina, konvensyen baris baharu lalai boleh ditentukan. Ini menentukan yang mana
aksara dan/atau pasangan aksara diiktiraf sebagai menunjukkan baris baharu dalam corak atau
rentetan subjek. Lalai boleh digantikan apabila corak disusun. Piawaian
fail ujian mengandungi ujian pelbagai konvensyen baris baharu, tetapi kebanyakan ujian
mengharapkan satu suapan baris diiktiraf sebagai baris baharu secara lalai. Tanpa tindakan khas
ujian akan gagal apabila PCRE2 disusun dengan sama ada CR atau CRLF sebagai baris baharu lalai.
Perintah #newline_default menentukan senarai jenis baris baharu yang boleh diterima sebagai
lalai. Jenis mestilah salah satu daripada CR, LF, CRLF, ANYCRLF, atau ANY (dalam huruf besar atau kecil),
sebagai contoh:
#newline_default LF Mana-mana CRLF
Jika baris baharu lalai ada dalam senarai, arahan ini tidak mempunyai kesan. Jika tidak, kecuali apabila
menguji API POSIX, a baris baru pengubah suai yang menentukan konvensyen baris baharu pertama dalam
senarai (LF dalam contoh di atas) ditambah kepada mana-mana corak yang belum mempunyai a
baris baru pengubahsuai. Jika senarai baris baharu kosong, ciri tersebut dimatikan. Perintah ini ialah
terdapat dalam beberapa fail input ujian standard.
Apabila API POSIX sedang diuji, tiada cara untuk mengatasi baris baharu lalai
konvensyen, walaupun adalah mungkin untuk menetapkan konvensyen baris baharu dari dalam corak. A
amaran diberikan sekiranya posix pengubah suai digunakan apabila #newline_default akan menetapkan lalai
untuk API bukan POSIX.
#corak
Perintah ini menetapkan senarai pengubah suai lalai yang digunakan untuk semua corak berikutnya.
Pengubah suai pada corak boleh menukar tetapan ini.
#perltest
Kemunculan baris ini menyebabkan semua tetapan pengubah suai seterusnya disemak
keserasian dengan perltest.sh skrip, yang digunakan untuk mengesahkan bahawa Perl memberikan
keputusan yang sama seperti PCRE2. Selain daripada baris komen, tiada satu pun baris arahan lain
dibenarkan, kerana mereka dan banyak pengubah adalah khusus untuk pcre2test, dan sepatutnya
tidak digunakan dalam fail ujian yang turut diproses oleh perltest.sh. Yang #perltest arahan
membantu mengesan ujian yang secara tidak sengaja dimasukkan ke dalam fail yang salah.
#pop [ ]
Perintah ini digunakan untuk memanipulasi timbunan corak yang disusun, seperti yang diterangkan dalam
bahagian bertajuk "Menyimpan dan memulihkan corak yang disusun" di bawah.
#simpan
Perintah ini digunakan untuk menyimpan satu set corak yang disusun pada fail, seperti yang diterangkan dalam
bahagian bertajuk "Menyimpan dan memulihkan corak yang disusun" di bawah.
#subjek
Perintah ini menetapkan senarai pengubah suai lalai yang digunakan untuk semua baris subjek berikutnya.
Pengubah suai pada baris subjek boleh menukar tetapan ini.
TUKAR SISTEM
Senarai pengubah suai digunakan dengan kedua-dua baris corak dan subjek. Item dalam senarai diasingkan
dengan koma diikuti dengan ruang putih pilihan. Mengekori ruang putih dalam senarai pengubah suai ialah
diabaikan. Sesetengah pengubah suai boleh diberikan untuk kedua-dua corak dan baris subjek, manakala yang lain
hanya sah untuk satu atau yang lain. Setiap pengubah suai mempunyai nama yang panjang, sebagai contoh
"berlabuh", dan sebahagian daripadanya mesti diikuti dengan tanda sama dan nilai, sebagai contoh,
"offset=12". Nilai tidak boleh mengandungi aksara koma, tetapi mungkin mengandungi ruang. Pengubah suai
yang tidak mengambil nilai mungkin didahului dengan tanda tolak untuk mematikan tetapan sebelumnya.
Beberapa pengubah yang lebih biasa juga boleh ditentukan sebagai huruf tunggal, sebagai contoh
"i" untuk "tanpa kes". Dalam dokumentasi, mengikut konvensyen Perl, ini ditulis
dengan garis miring ("pengubah suai /i") untuk kejelasan. Pengubah suai singkatan mestilah semuanya
digabungkan dalam item pertama senarai pengubah suai. Jika item pertama tidak diiktiraf sebagai
nama pengubah suai yang panjang, ia ditafsirkan sebagai urutan singkatan ini. Sebagai contoh:
/abc/ig,newline=cr,jit=3
Ini ialah garis corak yang senarai pengubahnya bermula dengan dua pengubah satu huruf (/i dan
/g). Pengubah suai yang disingkat huruf kecil adalah sama seperti yang digunakan dalam Perl.
CORAK SISTEM
Garis corak mesti bermula dengan salah satu daripada aksara berikut (simbol biasa, tidak termasuk
aksara meta corak):
/ ! " ' ` - = _ : ; , % & @ ~
Ini ditafsirkan sebagai pembatas corak. Ungkapan biasa boleh diteruskan
beberapa baris input, dalam hal ini aksara baris baharu disertakan di dalamnya. Ia adalah
mungkin untuk memasukkan pembatas dalam corak dengan melepaskannya dengan garis miring ke belakang, untuk
contoh
/a B C D E F/
Jika anda melakukan ini, pelarian dan pembatas menjadi sebahagian daripada corak, tetapi sejak
pembatas semuanya bukan abjad angka, ini tidak menjejaskan tafsirannya. Sekiranya
penamatan pembatas diikuti dengan segera dengan garis miring ke belakang, sebagai contoh,
/abc/\
kemudian garis miring ke belakang ditambah pada penghujung corak. Ini dilakukan untuk menyediakan cara
menguji keadaan ralat yang timbul jika corak selesai dengan garis miring ke belakang, kerana
/abc\/
ditafsirkan sebagai baris pertama corak yang bermula dengan "abc/", menyebabkan pcre2test
untuk membaca baris seterusnya sebagai kesinambungan ungkapan biasa.
Corak boleh diikuti dengan senarai pengubah suai (butiran di bawah).
TERTAKLUK LINE SISTEM
Sebelum setiap baris subjek dihantar ke pcre2_match() or pcre2_dfa_match(), memimpin dan
ruang putih mengekori dialih keluar, dan garisan diimbas untuk meloloskan garis miring ke belakang. The
berikut menyediakan cara pengekodan aksara bukan pencetakan dengan cara yang boleh dilihat:
\penggera (BEL, \x07)
\b ruang belakang (\x08)
\e melarikan diri (\x27)
\f suapan borang (\x0c)
\n baris baharu (\x0a)
\r pemulangan pengangkutan (\x0d)
tab \t (\x09)
\v tab menegak (\x0b)
\nnn aksara perlapanan (sehingga 3 digit perlapanan); sentiasa
bait melainkan > 255 dalam mod UTF-8 atau 16-bit atau 32-bit
\o{dd...} aksara perlapanan (sebarang bilangan digit perlapanan}
\xhh bait perenambelasan (sehingga 2 digit heksadesimal)
\x{hh...} aksara perenambelasan (sebarang bilangan digit heks)
Penggunaan \x{hh...} tidak bergantung pada penggunaan utf pengubahsuai pada corak. Ia adalah
diiktiraf sentiasa. Mungkin terdapat sebarang bilangan digit heksadesimal di dalam pendakap;
nilai tidak sah mencetuskan mesej ralat.
Ambil perhatian bahawa \xhh menentukan satu bait dan bukannya satu aksara dalam mod UTF-8; ini menjadikannya
mungkin untuk membina urutan UTF-8 yang tidak sah untuk tujuan ujian. Selain itu,
\x{hh} ditafsirkan sebagai aksara UTF-8 dalam mod UTF-8, menjana lebih daripada satu bait jika
nilainya lebih besar daripada 127. Apabila menguji perpustakaan 8-bit bukan dalam mod UTF-8, \x{hh}
menjana satu bait untuk nilai kurang daripada 256, dan menyebabkan ralat untuk nilai yang lebih besar.
Dalam mod UTF-16, semua nilai \x{hhhh} 4 digit diterima. Ini memungkinkan untuk
bina urutan UTF-16 yang tidak sah untuk tujuan ujian.
Dalam mod UTF-32, semua nilai 4 hingga 8 digit \x{...} diterima. Ini memungkinkan untuk
bina urutan UTF-32 yang tidak sah untuk tujuan ujian.
Terdapat urutan garis miring terbalik khas yang menentukan replikasi satu atau lebih
watak:
\[ ]{ }
Ini memungkinkan untuk menguji rentetan panjang tanpa perlu menyediakannya sebagai sebahagian daripada
fail. Sebagai contoh:
\[abc]{4}
ditukar kepada "abcabcabcabc". Ciri ini tidak menyokong sarang. Untuk memasukkan a
kurungan tutup segi empat sama dalam aksara, kodkannya sebagai \x5D.
Segaris ke belakang diikuti dengan tanda sama menandakan berakhirnya rentetan subjek dan permulaan
daripada senarai pengubah suai. Sebagai contoh:
abc\=notbol,notempty
Jika rentetan subjek kosong dan \= diikuti dengan ruang putih, baris itu dianggap sebagai a
baris ulasan, dan tidak digunakan untuk pemadanan. Sebagai contoh:
\= Ini adalah ulasan.
abc\= Ini ialah senarai pengubah suai yang tidak sah.
Segaris ke belakang diikuti oleh mana-mana aksara bukan abjad angka yang lain hanya melepaskan watak itu.
Tanda serong ke belakang diikuti dengan apa-apa lagi menyebabkan ralat. Walau bagaimanapun, jika watak terakhir
dalam baris adalah garis miring ke belakang (dan tiada senarai pengubah suai), ia diabaikan. Ini memberikan a
cara melepasi baris kosong sebagai data, kerana baris kosong sebenar menamatkan input data.
CORAK PENGUBAH
Terdapat beberapa jenis pengubah suai yang boleh muncul dalam garis corak. Kecuali yang dinyatakan
di bawah, ia juga boleh digunakan dalam #corak arahan. Senarai pengubah suai corak boleh menambah atau
mengatasi pengubah suai lalai yang telah ditetapkan oleh sebelumnya #corak perintah.
Menetapkan kompilasi pilihan
Pengubah suai berikut menetapkan pilihan untuk pcre2_compile(). Yang paling biasa mempunyai satu-
singkatan huruf. Lihat pcre2api untuk penerangan tentang kesannya.
allow_empty_class set PCRE2_ALLOW_EMPTY_CLASS
alt_bsux tetapkan PCRE2_ALT_BSUX
set alt_circumflex PCRE2_ALT_CIRCUMFLEX
alt_verbnames menetapkan PCRE2_ALT_VERBNAMES
set berlabuh PCRE2_ANCHORED
set auto_callout PCRE2_AUTO_CALLOUT
/i set tanpa kotak PCRE2_CASELESS
dollar_endonly set PCRE2_DOLLAR_ENDONLY
/s dotall set PCRE2_DOTALL
nama dup ditetapkan PCRE2_DUPNAMES
/x set lanjutan PCRE2_EXTENDED
set baris pertama PCRE2_FIRSTLINE
match_unset_backref set PCRE2_MATCH_UNSET_BACKREF
/m set berbilang talian PCRE2_MULTILINE
never_backslash_c set PCRE2_NEVER_BACKSLASH_C
never_ucp tetapkan PCRE2_NEVER_UCP
never_utf tetapkan PCRE2_NEVER_UTF
set no_auto_capture PCRE2_NO_AUTO_CAPTURE
set no_auto_possess PCRE2_NO_AUTO_POSSESS
set no_dotstar_anchor PCRE2_NO_DOTSTAR_ANCHOR
set no_start_optimize PCRE2_NO_START_OPTIMIZE
set no_utf_check PCRE2_NO_UTF_CHECK
ucp set PCRE2_UCP
set tidak tamak PCRE2_UNGREEDY
use_offset_limit set PCRE2_USE_OFFSET_LIMIT
utf tetapkan PCRE2_UTF
Serta menghidupkan pilihan PCRE2_UTF, pilihan utf pengubah suai menyebabkan semua tidak dicetak
aksara dalam rentetan output untuk dicetak menggunakan tatatanda \x{hh...}. Jika tidak, mereka
kurang daripada 0x100 adalah output dalam hex tanpa kurungan kerinting.
Menetapkan kompilasi kawalan
Pengubah suai berikut mempengaruhi proses penyusunan atau meminta maklumat tentang
corak:
bsr=[anycrlf|unicode] nyatakan pengendalian \R
/B bincode menunjukkan kod binari tanpa panjang
info_serlahan ciri menunjukkan maklumat butiran
nyahpepijat sama seperti info,fullbincode
fullbincode menunjukkan kod binari dengan panjang
/I maklumat menunjukkan maklumat tentang corak yang disusun
corak hex dikodkan dalam perenambelasan
jit [= ] gunakan JIT
jitfast gunakan laluan pantas JIT
jitverify mengesahkan penggunaan JIT
setempat= gunakan tempat ini
max_pattern_length= tetapkan panjang corak maksimum
ingatan menunjukkan ingatan yang digunakan
baris baharu= tetapkan jenis baris baharu
null_context menyusun dengan konteks NULL
parens_nest_limit= tetapkan kedalaman kurungan maksimum
posix menggunakan API POSIX
tolak tolak corak tersusun pada tindanan
stackguard= menguji ciri stackguard
tables=[0|1|2] pilih jadual dalaman
Kesan pengubah suai ini diterangkan dalam bahagian berikut.
Baris baru and \R mengendalikan
. BSR pengubah suai menentukan \R dalam corak harus sepadan. Jika ia ditetapkan kepada "anycrlf",
\R sepadan dengan CR, LF atau CRLF sahaja. Jika ia ditetapkan kepada "unicode", \R sepadan dengan mana-mana baris baharu Unicode
urutan. Lalai ditentukan apabila PCRE2 dibina, dengan lalai lalai adalah
Unicode.
. baris baru pengubah suai menentukan aksara yang hendak ditafsirkan sebagai baris baharu, kedua-duanya dalam
corak dan dalam baris subjek. Jenis mestilah salah satu daripada CR, LF, CRLF, ANYCRLF atau ANY
(dalam huruf besar atau kecil).
Maklumat mengenai a pola
. debug pengubah suai ialah singkatan untuk maklumat, fullbincode, meminta semua tersedia
maklumat.
. bincode pengubah suai menyebabkan perwakilan kod yang disusun menjadi output selepas
kompilasi. Maklumat ini tidak mengandungi nilai panjang dan mengimbangi, yang memastikan
bahawa output yang sama dijana untuk saiz pautan dalaman yang berbeza dan kod yang berbeza
lebar unit. Dengan menggunakan bincode, ujian regresi yang sama boleh digunakan dalam berbeza
persekitaran.
. fullbincode pengubah suai, sebaliknya, tidak termasuk nilai panjang dan mengimbangi. Ini digunakan
dalam beberapa ujian khas yang dijalankan hanya untuk lebar unit kod tertentu dan saiz pautan, dan adalah
juga berguna untuk ujian sekali sahaja.
. maklumat pengubah suai meminta maklumat tentang corak yang disusun (sama ada ia berlabuh,
mempunyai aksara pertama yang tetap, dan seterusnya). Maklumat diperoleh daripada
pcre2_pattern_info() fungsi. Berikut adalah beberapa contoh biasa:
semula> /(?i)(^a|^b)/m,maklumat
Menangkap kiraan subcorak = 1
Pilihan penyusun: berbilang baris
Pilihan keseluruhan: berbilang talian tanpa kotak
Unit kod pertama pada permulaan atau mengikuti baris baharu
Panjang subjek sempadan bawah = 1
semula> /(?i)abc/info
Menangkap kiraan subcorak = 0
Pilihan penyusun:
Pilihan keseluruhan: tanpa kes
Unit kod pertama = 'a' (tanpa huruf besar)
Unit kod terakhir = 'c' (tanpa huruf besar)
Panjang subjek sempadan bawah = 3
"Pilihan penyusun" ialah yang ditentukan oleh pengubah suai; "pilihan keseluruhan" telah menambah pilihan
yang diambil atau disimpulkan daripada corak. Jika kedua-dua set pilihan adalah sama, cuma a
baris "pilihan" tunggal adalah output; jika tiada pilihan, baris ditiadakan. "Kod pertama
unit" ialah tempat mana-mana perlawanan mesti bermula; jika terdapat lebih daripada satu perlawanan itu disenaraikan sebagai
"unit kod permulaan". "Unit kod terakhir" ialah unit kod literal terakhir yang mesti ada
dalam mana-mana perlawanan. Ini tidak semestinya watak terakhir. Baris ini ditinggalkan jika tidak
unit kod permulaan atau penamat direkodkan.
. info_serlahan ciri pengubah suai meminta maklumat tentang semua serlahan ciri dalam corak. A
senarai mereka adalah output pada penghujung sebarang maklumat lain yang diminta. Untuk setiap
butiran, sama ada nombor atau rentetannya diberikan, diikuti dengan item yang mengikutinya dalam
.
Pemergian a NULL konteks
Biasanya, pcre2test melepasi blok konteks ke pcre2_compile(). Jika null_context
pengubah suai ditetapkan, bagaimanapun, NULL diluluskan. Ini untuk menguji itu pcre2_compile() berkelakuan
dengan betul dalam kes ini (ia menggunakan nilai lalai).
Menentukan a pola in heks
. heks pengubah suai menentukan bahawa aksara corak akan ditafsirkan sebagai
pasangan digit heksadesimal. Ruang putih dibenarkan antara pasangan. Sebagai contoh:
/ab 32 59/hex
Ciri ini disediakan sebagai cara mencipta corak yang mengandungi sifar binari dan lain-lain
aksara bukan cetakan. Secara lalai, pcre2test melepasi corak sebagai rentetan penamatan sifar
kepada pcre2_compile(), memberikan panjang sebagai PCRE2_ZERO_TERMINATED. Walau bagaimanapun, untuk corak
dinyatakan dalam perenambelasan, panjang sebenar corak dilalui.
Menjana lama berulang-ulang corak
Sesetengah ujian menggunakan corak panjang yang sangat berulang. Daripada mencipta yang sangat panjang
baris input untuk corak sedemikian, anda boleh menggunakan ciri pengulangan khas, sama dengan
satu yang diterangkan untuk baris subjek di atas. Sekiranya mengembangkan pengubah suai hadir pada corak,
bahagian corak yang mempunyai bentuk
\[ ]{ }
dikembangkan sebelum corak dihantar ke pcre2_compile(). Contohnya, \[AB]{6000} ialah
dikembangkan kepada "ABAB..." 6000 kali. Pembinaan ini tidak boleh bersarang. Awalan "\["
jujukan dikenali hanya jika "]{" diikuti dengan digit perpuluhan dan "}" ditemui kemudian dalam
corak itu. Jika tidak, watak kekal dalam corak tidak berubah.
Jika sebahagian daripada corak yang dikembangkan kelihatan seperti pengembangan, tetapi benar-benar sebahagian daripada yang sebenar
corak, pengembangan yang tidak diingini boleh dielakkan dengan memberikan dua nilai dalam pengkuantiti. Untuk
contoh, \[AB]{6000,6000} tidak diiktiraf sebagai item pengembangan.
Jika maklumat pengubah suai ditetapkan pada corak yang diperluaskan, hasil pengembangan ialah
termasuk dalam maklumat yang dikeluarkan.
JIT kompilasi
Penyusunan Just-in-time (JIT) ialah pengoptimuman wajaran berat yang boleh mempercepatkan
padanan corak. Lihat pcre2jit dokumentasi untuk butiran. Penyusunan JIT berlaku,
secara pilihan, selepas corak berjaya disusun ke dalam bentuk dalaman. JIT itu
pengkompil menukar ini kepada kod mesin yang dioptimumkan. Ia perlu tahu sama ada masa perlawanan
pilihan PCRE2_PARTIAL_HARD dan PCRE2_PARTIAL_SOFT akan digunakan, kerana berbeza
kod dijana untuk kes yang berbeza. Lihat separa pengubah suai dalam "Pengubah Suai Subjek"
di bawah untuk butiran tentang cara pilihan ini ditentukan untuk setiap percubaan perlawanan.
Penyusunan JIT diminta oleh /jit pengubah suai corak, yang mungkin menjadi pilihan
diikuti dengan tanda sama dan nombor dalam julat 0 hingga 7. Tiga bit yang membentuk
nombor menentukan yang mana antara tiga mod operasi JIT akan disusun:
1 menyusun kod JIT untuk padanan bukan separa
2 menyusun kod JIT untuk padanan separa lembut
4 menyusun kod JIT untuk padanan separa keras
Nilai yang mungkin untuk /jit Oleh itu pengubahsuai adalah:
0 lumpuhkan JIT
1 padanan biasa sahaja
2 padanan separa lembut sahaja
3 padanan separa normal dan lembut
4 padanan separa keras sahaja
6 padanan separa lembut dan keras sahaja
7 ketiga-tiga mod
Jika tiada nombor diberikan, 7 diandaikan. Frasa "padanan separa" bermaksud panggilan kepada
pcre2_match() dengan sama ada set pilihan PCRE2_PARTIAL_SOFT atau PCRE2_PARTIAL_HARD.
Ambil perhatian bahawa panggilan sedemikian mungkin mengembalikan padanan lengkap; pilihan membolehkan kemungkinan a
padanan separa, tetapi tidak memerlukannya. Perhatikan juga bahawa jika anda meminta kompilasi JIT sahaja
untuk padanan separa (contohnya, /jit=2) tetapi jangan tetapkan separa pengubahsuai pada a
baris subjek, padanan itu tidak akan menggunakan kod JIT kerana tiada satu pun disusun untuk bukan separa
sepadan.
Jika kompilasi JIT berjaya, kod JIT yang disusun akan digunakan secara automatik apabila a
jenis perlawanan yang sesuai dijalankan, kecuali apabila pilihan masa jalan yang tidak serasi ditentukan.
Untuk maklumat lanjut, lihat pcre2jit dokumentasi. Lihat juga jitstack pengubah suai di bawah untuk
satu cara untuk menetapkan saiz timbunan JIT.
Jika jitfast pengubah suai ditentukan, pemadanan dilakukan menggunakan "laluan pantas" JIT
antara muka, pcre2_jit_match(), yang melangkau beberapa pemeriksaan kewarasan yang dilakukan oleh
pcre2_match(), dan sudah tentu tidak berfungsi apabila JIT tidak disokong. Jika jitfast is
dinyatakan tanpa jit, jit=7 diandaikan.
Jika jitverify pengubah suai ditentukan, maklumat tentang corak yang disusun menunjukkan
sama ada kompilasi JIT berjaya atau tidak. Jika jitverify dinyatakan tanpa jit,
jit=7 diandaikan. Jika kompilasi JIT berjaya apabila jitverify ditetapkan, teks "(JIT)"
ditambahkan pada baris keluaran pertama selepas padanan atau tidak padanan apabila kod yang disusun JIT
sebenarnya digunakan dalam perlawanan itu.
Menetapkan a tempat-tempat kejadian
. /tempatan pengubah suai mesti menyatakan nama tempat, contohnya:
/pattern/locale=fr_FR
Tempat yang diberikan ditetapkan, pcre2_maketables() dipanggil untuk membina satu set jadual aksara
untuk setempat, dan ini kemudiannya dihantar ke pcre2_compile() apabila menyusun biasa
ungkapan. Jadual yang sama digunakan apabila memadankan baris subjek berikut. The
/tempatan pengubah suai hanya digunakan pada corak yang ia muncul, tetapi boleh diberikan dalam a
#corak arahan jika lalai diperlukan. Menetapkan tempat dan jadual aksara ganti
saling eksklusif.
Paparan pola memori
. /ingatan pengubah suai menyebabkan saiz dalam bait memori yang digunakan untuk menyimpan yang disusun
corak untuk dijadikan output. Ini tidak termasuk saiz pcre2_code blok; Ianya hanya
data terkumpul sebenar. Jika corak kemudiannya dihantar ke pengkompil JIT, the
saiz kod yang disusun JIT juga dikeluarkan. Berikut adalah contoh:
re> /a(b)c/jit,memori
Peruntukan ingatan (ruang kod): 21
Peruntukan memori (kod JIT): 1910
Mengehadkan bersarang kurungan
. had_sarang_parens pengubah suai menetapkan had pada kedalaman kurungan bersarang dalam a
corak. Melanggar had menyebabkan ralat penyusunan. Lalai untuk perpustakaan ialah
ditetapkan apabila PCRE2 dibina, tetapi pcre2test menetapkan lalainya sendiri sebanyak 220, yang diperlukan untuk
menjalankan suite ujian standard.
Mengehadkan yang pola panjang
. max_pattern_length pengubah suai menetapkan had, dalam unit kod, kepada panjang corak itu
pcre2_compile() akan menerima. Melanggar had menyebabkan ralat penyusunan. lalai
ialah nombor terbesar yang boleh dipegang oleh pembolehubah PCRE2_SIZE (pada asasnya tidak terhad).
Menggunakan yang POSIX pembalut API
. /posix punca pengubah suai pcre2test untuk memanggil PCRE2 melalui API pembalut POSIX dan bukannya
API asalnya. Ini hanya menyokong perpustakaan 8-bit. Ambil perhatian bahawa ia tidak membayangkan POSIX
semantik yang sepadan; untuk butiran lanjut lihat pcre2posix dokumentasi. Apabila API POSIX
sedang digunakan, pengubah suai corak berikut menetapkan pilihan untuk regcomp() fungsi:
REG_ICASE tanpa kes
berbilang talian REG_NEWLINE
no_auto_capture REG_NOSUB
dotall REG_DOTALL )
tidak tamak REG_UNGREEDY ) Pilihan ini bukan sebahagian daripada
ucp REG_UCP ) standard POSIX
utf REG_UTF8 )
. regerror_buffsize pengubah suai menentukan saiz untuk penimbal ralat yang dihantar kepada
regerror() sekiranya berlaku ralat penyusunan. Sebagai contoh:
/abc/posix,regerror_buffsize=20
Ini menyediakan cara untuk menguji tingkah laku regerror() apabila penimbal terlalu kecil
untuk mesej ralat. Jika pengubah suai ini belum ditetapkan, penimbal besar digunakan.
. teks selepasnya and allaftertext pengubah suai subjek berfungsi seperti yang diterangkan di bawah. Semua yang lain
pengubahsuai menyebabkan ralat.
Ujian yang timbunan pengawal ciri
. /stackguard pengubah suai digunakan untuk menguji penggunaan pcre2_set_compile_recursion_guard(),
fungsi yang disediakan untuk membolehkan ketersediaan tindanan disemak semasa penyusunan
(Lihat pcre2api dokumentasi untuk butiran). Jika nombor yang ditentukan oleh pengubah adalah
lebih besar daripada sifar, pcre2_set_compile_recursion_guard() dipanggil untuk menyediakan panggilan balik daripada
pcre2_compile() kepada fungsi tempatan. Hujah yang diterima ialah sarang semasa
kedalaman kurungan; jika ini lebih besar daripada nilai yang diberikan oleh pengubah, bukan sifar adalah
dikembalikan, menyebabkan kompilasi dibatalkan.
Menggunakan alternatif watak meja
Nilai yang ditentukan untuk /meja pengubah suai mestilah salah satu daripada digit 0, 1 atau 2. Ia
menyebabkan set jadual aksara terbina dalam tertentu dihantar kepada pcre2_compile(). ini
digunakan dalam ujian PCRE2 untuk menyemak tingkah laku dengan jadual aksara yang berbeza. Digit
menentukan jadual seperti berikut:
0 tidak melepasi sebarang jadual aksara khas
1 jadual ASCII lalai, seperti yang diedarkan dalam
pcre2_chartables.c.dist
2 set jadual yang mentakrifkan aksara ISO 8859
Dalam jadual 2, beberapa aksara yang kodnya lebih besar daripada 128 dikenal pasti sebagai huruf,
digit, ruang, dsb. Menetapkan jadual aksara ganti dan tempat adalah secara bersama
eksklusif.
Menetapkan tertentu sepadan dengan kawalan
Pengubah suai berikut benar-benar pengubah suai subjek, dan diterangkan di bawah. Walau bagaimanapun,
ia mungkin disertakan dalam senarai pengubah suai corak, dalam hal ini ia digunakan pada setiap
baris subjek yang diproses dengan corak itu. Mereka mungkin tidak muncul #corak
arahan. Pengubah suai ini tidak menjejaskan proses penyusunan.
teks selepas menunjukkan teks selepas perlawanan
allaftertext menunjukkan teks selepas tangkapan
allcaptures menunjukkan semua tangkapan
allusedtext menunjukkan semua teks yang dirujuk
/g padanan global global
tanda menunjukkan nilai markah
menggantikan= nyatakan rentetan gantian
startchar menunjukkan watak permulaan apabila berkaitan
gantikan_lanjutkan penggunaan PCRE2_SUBSTITUTE_EXTENDED
ganti_overflow_length gunakan PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
gantikan_unknown_unset gunakan PCRE2_SUBSTITUTE_UNKNOWN_UNSET
gantikan_unset_kosong gunakan PCRE2_SUBSTITUTE_UNSET_EMPTY
Pengubah suai ini mungkin tidak muncul dalam a #corak perintah. Jika anda mahukannya sebagai lalai, tetapkan
mereka dalam a #subjek perintah.
Penjimatan a disusun pola
Apabila corak dengan menolak pengubah suai berjaya disusun, ia ditolak ke timbunan
corak yang disusun, dan pcre2test menjangkakan baris seterusnya mengandungi corak baharu (atau a
perintah) bukannya baris subjek. Kemudahan ini digunakan apabila menyimpan corak yang disusun ke
fail, seperti yang diterangkan dalam bahagian bertajuk "Menyimpan dan memulihkan corak yang disusun"
di bawah. The menolak pengubah suai tidak serasi dengan pengubah kompilasi seperti global Bahawa
bertindak pada masa perlawanan. Mana-mana yang dinyatakan diabaikan, dengan mesej amaran, kecuali untuk
menggantikan, yang menyebabkan ralat. Perhatikan bahawa, jitverify, yang dibenarkan, tidak membawa
melalui mana-mana padanan berikutnya yang menggunakan corak ini.
TERTAKLUK PENGUBAH
Pengubah suai yang boleh muncul dalam baris subjek dan #subjek perintah ada dua jenis.
Menetapkan sepadan dengan pilihan
Pengubah suai berikut menetapkan pilihan untuk pcre2_match() or pcre2_dfa_match(). Lihat pcreapi
untuk penerangan tentang kesannya.
set berlabuh PCRE2_ANCHORED
dfa_restart tetapkan PCRE2_DFA_RESTART
dfa_shortest set PCRE2_DFA_SHORTEST
set no_utf_check PCRE2_NO_UTF_CHECK
notbol set PCRE2_NOTBOL
set notempty PCRE2_NOTEMPTY
set notempty_atstart PCRE2_NOTEMPTY_ATSTART
set noteol PCRE2_NOTEOL
set separa_keras (atau ph) PCRE2_PARTIAL_HARD
set partial_soft (atau ps) PCRE2_PARTIAL_SOFT
Pengubah suai padanan separa disediakan dengan singkatan kerana ia muncul
kerap dalam ujian.
Jika /posix pengubah suai hadir pada corak, menyebabkan API pembalut POSIX menjadi
digunakan, satu-satunya pengubah tetapan pilihan yang mempunyai sebarang kesan ialah notbol, tidak kosong, dan
noteol, menyebabkan REG_NOTBOL, REG_NOTEMPTY dan REG_NOTEOL, masing-masing, dihantar ke
regexec(). Sebarang pengubah suai lain menyebabkan ralat.
Menetapkan sepadan dengan kawalan
Pengubah suai berikut menjejaskan proses pemadanan atau meminta maklumat tambahan.
Sesetengah daripada mereka mungkin juga dinyatakan pada garis corak (lihat di atas), dalam hal ini ia digunakan
kepada setiap baris subjek yang dipadankan dengan corak itu.
teks selepas menunjukkan teks selepas perlawanan
allaftertext menunjukkan teks selepas tangkapan
allcaptures menunjukkan semua tangkapan
allusedtext menunjukkan semua teks yang dirujuk (bukan JIT sahaja)
pemadanan global alternatif altglobal
callout_capture menunjukkan tangkapan pada masa serlahan ciri
data_serlahan ciri= tetapkan nilai untuk dihantar melalui serlahan ciri
petak bual_fail= [: ] mengawal kegagalan butiran
callout_none tidak membekalkan fungsi serlahan ciri
salinan= salin subrentetan yang ditangkap
penggunaan dfa pcre2_dfa_match()
find_limits cari padanan dan had rekursi
dapatkan= ekstrak subrentetan yang ditangkap
getall mengekstrak semua subrentetan yang ditangkap
/g padanan global global
jitstack= tetapkan saiz timbunan JIT
tanda menunjukkan nilai markah
had_padanan= tetapkan had perlawanan
ingatan menunjukkan penggunaan ingatan
padanan null_context dengan konteks NULL
mengimbangi= set permulaan offset
had_offset= tetapkan had offset
ovector= set saiz vektor keluaran
had_rekursi= tetapkan had rekursi
menggantikan= nyatakan rentetan gantian
startchar tunjukkan startchar apabila berkaitan
startoffset= sama seperti offset=
pengganti_dilanjutkan gunakan PCRE2_SUBSTITUTE_EXTENDED
ganti_overflow_length gunakan PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
gantikan_unknown_unset gunakan PCRE2_SUBSTITUTE_UNKNOWN_UNSET
gantikan_unset_kosong gunakan PCRE2_SUBSTITUTE_UNSET_EMPTY
zero_terminate lulus subjek sebagai zero-terminate
Kesan pengubah suai ini diterangkan dalam bahagian berikut.
Paparan lebih teks
. teks selepasnya permintaan pengubah suai itu serta mengeluarkan bahagian rentetan subjek
yang sepadan dengan keseluruhan corak, pcre2test hendaklah sebagai tambahan mengeluarkan baki daripada
rentetan subjek. Ini berguna untuk ujian di mana subjek mengandungi berbilang salinan
subrentetan yang sama. The allaftertext pengubah suai meminta tindakan yang sama untuk subrentetan yang ditangkap
serta subrentetan utama yang dipadankan. Dalam setiap kes baki adalah output pada
baris berikut dengan aksara tambah mengikut nombor tangkapan.
. teks kiasan pengubah suai meminta semua teks yang dirujuk semasa berjaya
padanan corak oleh jurubahasa hendaklah ditunjukkan. Ciri ini tidak disokong untuk JIT
padanan, dan jika diminta dengan JIT ia diabaikan (dengan mesej amaran). Menetapkan ini
pengubah suai mempengaruhi output jika terdapat pandangan di belakang pada permulaan perlawanan, atau a
pandang ke hadapan pada penghujung, atau jika \K digunakan dalam corak. Watak yang mendahului atau mengikuti
permulaan dan akhir padanan sebenar ditunjukkan dalam output dengan aksara '<' atau '>'
di bawah mereka. Berikut adalah contoh:
semula> /(?<=pqr)abc(?=xyz)/
data> 123pqrabcxyz456\=allusedtext
0: pqrabcxyz
<<< >>>
Ini menunjukkan bahawa rentetan yang dipadankan ialah "abc", dengan rentetan sebelum dan seterusnya
"pqr" dan "xyz" telah dirujuk semasa perlawanan (semasa memproses penegasan).
. startchar pengubah suai meminta agar watak permulaan untuk perlawanan ditunjukkan, jika
ia berbeza dengan permulaan rentetan yang dipadankan. Satu-satunya masa apabila ini berlaku ialah apabila
\K telah diproses sebagai sebahagian daripada perlawanan. Dalam keadaan ini, output untuk dipadankan
rentetan dipaparkan daripada aksara permulaan dan bukannya dari titik perlawanan, dengan
aksara circumflex di bawah aksara terdahulu. Sebagai contoh:
semula> /abc\Kxyz/
data> abcxyz\=startchar
0: abcxyz
^^^
Tidak seperti teks kiasan, yang startchar pengubah suai boleh digunakan dengan JIT. Namun, kedua-dua ini
pengubah suai adalah saling eksklusif.
Paparan yang nilai of semua menangkap kumpulan
. semua tangkapan pengubah suai meminta agar nilai semua tanda kurung yang berpotensi ditangkap
keluaran selepas perlawanan. Secara lalai, hanya yang paling tinggi yang benar-benar digunakan dalam
padanan adalah output (sepadan dengan kod pulangan daripada pcre2_match()). Kumpulan yang melakukannya
tidak mengambil bahagian dalam perlawanan adalah output sebagai " ".
Ujian butiran
Fungsi serlahan ciri dibekalkan apabila pcre2test memanggil fungsi pemadanan perpustakaan, melainkan
butiran_tiada dinyatakan. Jika serlahan ciri_capture ditetapkan, kumpulan yang ditangkap semasa adalah
output apabila serlahan ciri berlaku.
. petak bual_fail pengubahsuai boleh diberi satu atau dua nombor. Jika hanya ada satu nombor, 1
dikembalikan bukannya 0 apabila serlahan ciri nombor itu dicapai. Jika dua nombor adalah
diberikan, 1 dikembalikan apabila serlahan ciri dicapai untuk kali ke. Ambil perhatian bahawa serlahan ciri
dengan hujah rentetan sentiasa diberi nombor sifar. Lihat "Petak bual" di bawah untuk a
perihalan output apabila serlahan ciri diambil.
. data_serlahan ciri pengubah suai boleh diberikan nombor tidak bertanda atau negatif. Ini ditetapkan sebagai
"data pengguna" yang dihantar ke fungsi padanan dan diserahkan kembali apabila serlahan ciri
fungsi dipanggil. Sebarang nilai selain daripada sifar digunakan sebagai pulangan daripada pcre2test's
fungsi petak bual.
Mencari semua perlawanan in a rentetan
Mencari semua kemungkinan padanan dalam subjek boleh diminta oleh global or
/altglobal pengubahsuai. Selepas mencari padanan, fungsi padanan dipanggil semula
cari baki subjek. Perbezaan antara global and altglobal ialah
bekas menggunakan start_offset hujah untuk pcre2_match() or pcre2_dfa_match() untuk memulakan
mencari pada titik baharu dalam keseluruhan rentetan (iaitu apa yang Perl lakukan), manakala
kemudiannya melepasi subjek yang dipendekkan. Ini membuat perbezaan kepada proses pemadanan jika
corak bermula dengan penegasan lihat di belakang (termasuk \b atau \B).
Jika rentetan kosong dipadankan, padanan seterusnya dilakukan dengan PCRE2_NOTEMPTY_ATSTART dan
Bendera PCRE2_ANCHORED ditetapkan, untuk mencari padanan yang lain, tidak kosong, pada masa yang sama
titik dalam subjek. Jika perlawanan ini gagal, offset permulaan adalah maju, dan normal
perlawanan dicuba semula. Ini meniru cara Perl mengendalikan kes sedemikian apabila menggunakan /g perubahan
atau berpecah () fungsi. Biasanya, offset permulaan dimajukan oleh satu aksara, tetapi jika
konvensyen baris baharu mengiktiraf CRLF sebagai baris baharu, dan watak semasa ialah CR
diikuti dengan LF, pendahuluan dua aksara berlaku.
Ujian subrentetan pengekstrakan fungsi
. salinan and mendapatkan pengubahsuai boleh digunakan untuk menguji pcre2_substring_copy_xxx() and
pcre2_substring_get_xxx() fungsi. Mereka boleh diberikan lebih daripada sekali, dan setiap satu boleh
nyatakan nama atau nombor kumpulan, contohnya:
abcd\=copy=1,copy=3,get=G1
Jika #subjek arahan digunakan untuk menetapkan salinan lalai dan/atau mendapatkan senarai, ini boleh dinyahtetapkan
dengan menyatakan nombor negatif untuk membatalkan semua kumpulan bernombor dan nama kosong untuk membatalkan
semua kumpulan yang dinamakan.
. getall ujian pengubah suai pcre2_substring_list_get(), yang mengekstrak semua yang ditangkap
subrentetan.
Jika baris subjek berjaya dipadankan, subrentetan diekstrak mengikut kemudahan
fungsi dikeluarkan dengan C, G atau L selepas nombor rentetan dan bukannya bertindih. Ini adalah
sebagai tambahan kepada senarai penuh biasa. Panjang rentetan (iaitu, pulangan dari
fungsi pengekstrakan) diberikan dalam kurungan selepas setiap subrentetan, diikuti dengan nama
apabila pengekstrakan adalah dengan nama.
Ujian yang penggantian fungsi
Jika menggantikan pengubah suai ditetapkan, yang pcre2_substitute() fungsi dipanggil bukannya satu
daripada fungsi padanan. Ambil perhatian bahawa rentetan gantian tidak boleh mengandungi koma, kerana a
koma menandakan berakhirnya pengubah suai. Ini tidak dianggap sebagai isu dalam ujian
program.
Tidak seperti rentetan subjek, pcre2test tidak memproses rentetan gantian untuk melarikan diri
urutan. Dalam mod UTF, rentetan gantian disemak untuk melihat sama ada ia adalah UTF-8 yang sah
tali. Jika ya, ia ditukar dengan betul kepada rentetan UTF bagi unit kod yang sesuai
lebar. Jika ia bukan rentetan UTF-8 yang sah, unit kod individu akan disalin secara langsung.
Ini menyediakan cara untuk menghantar rentetan UTF-8 yang tidak sah untuk tujuan ujian.
Pengubah suai berikut menetapkan pilihan (sebagai tambahan kepada pilihan padanan biasa) untuk
pcre2_substitute():
global PCRE2_SUBSTITUTE_GLOBAL
gantikan_dilanjutkan PCRE2_SUBSTITUTE_EXTENDED
gantikan_overflow_length PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
gantikan_unknown_unset PCRE2_SUBSTITUTE_UNKNOWN_UNSET
gantikan_unset_kosong PCRE2_SUBSTITUTE_UNSET_EMPTY
Selepas penggantian berjaya, rentetan yang diubah suai dikeluarkan, didahului dengan bilangan
pengganti. Ini mungkin sifar jika tiada padanan. Berikut adalah contoh mudah a
ujian penggantian:
/abc/replace=xxx
=abc=abc=
1: =xxx=abc=
=abc=abc=\=global
2: =xxx=xxx=
Rentetan subjek dan penggantian hendaklah disimpan secara relatifnya pendek (kurang daripada 256
aksara) untuk ujian penggantian, kerana penimbal saiz tetap digunakan. Untuk memudahkan
uji limpahan penimbal, jika rentetan gantian bermula dengan nombor dalam segi empat sama
kurungan, nombor itu dihantar ke pcre2_substitute() sebagai saiz penimbal keluaran,
dengan rentetan gantian bermula pada aksara seterusnya. Berikut adalah contoh yang menguji
kes tepi:
/abc/
123abc123\=replace=[10]XYZ
1: 123XYZ123
123abc123\=replace=[9]XYZ
Gagal: ralat -47: tiada lagi ingatan
Tindakan lalai bagi pcre2_substitute() adalah untuk mengembalikan PCRE2_ERROR_NOMEMORY apabila output
penimbal terlalu kecil. Walau bagaimanapun, jika pilihan PCRE2_SUBSTITUTE_OVERFLOW_LENGTH ditetapkan (oleh
menggunakan penggantian_panjang_limpahan pengubah suai), pcre2_substitute() terus dilalui
gerakan padanan dan penggantian, untuk mengira saiz penimbal iaitu
diperlukan. Apabila ini berlaku, pcre2test menunjukkan panjang penimbal yang diperlukan (yang termasuk
ruang untuk sifar di belakang) sebagai sebahagian daripada mesej ralat. Sebagai contoh:
/abc/substitute_overflow_length
123abc123\=replace=[9]XYZ
Gagal: ralat -47: tiada lagi memori: 10 unit kod diperlukan
Rentetan gantian diabaikan dengan padanan POSIX dan DFA. Menentukan padanan separa
mencetuskan pulangan ralat ("nilai pilihan buruk") daripada pcre2_substitute().
Menetapkan yang JIT timbunan saiz
. jitstack pengubah suai menyediakan cara untuk menetapkan saiz tindanan maksimum yang digunakan oleh
kod pengoptimuman tepat dalam masa. Ia diabaikan jika pengoptimuman JIT tidak digunakan. The
nilai ialah bilangan kilobait. Menyediakan tindanan yang lebih besar daripada 32K lalai
diperlukan hanya untuk corak yang sangat rumit.
Menetapkan sepadan dengan and pengulangan had
. had_padan and rekursi_had pengubah suai menetapkan had yang sesuai dalam perlawanan
konteks. Nilai ini diabaikan apabila had_cari pengubahsuai ditentukan.
Mencari sekurang-kurangnya had
Jika had_cari pengubah suai hadir, pcre2test panggilan pcre2_match() beberapa kali,
menetapkan nilai yang berbeza dalam konteks padanan melalui pcre2_set_match_limit() and
pcre2_set_recursion_limit() sehingga ia menemui nilai minimum bagi setiap parameter yang
membenarkan pcre2_match() untuk menyelesaikan tanpa kesilapan.
Jika JIT sedang digunakan, hanya had padanan yang berkaitan. Jika padanan DFA sedang digunakan,
tiada had yang berkaitan, dan pengubah suai ini diabaikan (dengan mesej amaran).
. had_padan nombor ialah ukuran jumlah pengunduran yang berlaku, dan
mempelajari nilai minimum boleh menjadi pengajaran. Untuk kebanyakan padanan mudah, nombornya ialah
agak kecil, tetapi untuk corak dengan bilangan kemungkinan padanan yang sangat besar, ia boleh
menjadi besar dengan cepat dengan peningkatan panjang rentetan subjek. The
perlawanan_had_rekursi nombor ialah ukuran berapa banyak tindanan (atau, jika PCRE2 disusun dengan
NO_RECURSE, berapa banyak timbunan) memori yang diperlukan untuk melengkapkan percubaan perlawanan.
Paparan MARK nama
. tanda pengubah suai menyebabkan nama daripada kata kerja kawalan menjejak mundur yang dikembalikan daripada
panggilan ke pcre2_match() untuk dipaparkan. Jika markah dikembalikan untuk perlawanan, bukan padanan, atau
perlawanan separa, pcre2test menunjukkannya. Untuk perlawanan, ia berada pada baris dengan sendirinya, ditandakan dengan
"MK:". Jika tidak, ia ditambahkan pada mesej bukan padanan.
Paparan memori penggunaan
. memori punca pengubah suai pcre2test untuk log semua peruntukan memori dan membebaskan panggilan itu
berlaku semasa operasi perlawanan.
Menetapkan a bermula mengimbangi
. mengimbangi pengubah suai menetapkan offset dalam rentetan subjek di mana padanan bermula. Ianya
nilai ialah beberapa unit kod, bukan aksara.
Menetapkan an mengimbangi menghadkan
. had_offset pengubah suai menetapkan had untuk padanan yang tidak ditambatkan. Jika padanan tidak dapat ditemui
bermula pada atau sebelum offset ini dalam subjek, pulangan "tiada padanan" diberikan. Data itu
nilai ialah beberapa unit kod, bukan aksara. Apabila pengubah suai ini digunakan,
gunakan_offset_had pengubah suai mesti telah ditetapkan untuk corak; jika tidak, ralat adalah
dihasilkan.
Menetapkan yang saiz of yang output vektor
. ovector pengubah suai hanya digunakan pada baris subjek di mana ia muncul, walaupun
tentu ia juga boleh digunakan untuk menetapkan lalai dalam a #subjek perintah. Ia menentukan nombor
pasangan ofset yang tersedia untuk menyimpan maklumat padanan. Lalainya ialah
15.
Nilai sifar berguna apabila menguji API POSIX kerana ia menyebabkan regexec() menjadi
dipanggil dengan vektor tangkapan NULL. Apabila tidak menguji API POSIX, nilai sifar digunakan
untuk membuat pcre2_match_data_create_from_pattern() untuk dipanggil, untuk mencipta perlawanan
bongkah dengan saiz yang betul-betul sesuai untuk corak. (Tidak mungkin untuk mencipta perlawanan
blok dengan ovector panjang sifar; sentiasa ada sekurang-kurangnya sepasang ofset.)
Pemergian yang tertakluk as ditamatkan sifar
Secara lalai, rentetan subjek dihantar ke fungsi pemadanan API asli dengannya
panjang yang betul. Untuk menguji kemudahan untuk melepasi rentetan penamatan sifar, the
zero_terminate pengubah suai disediakan. Ia menyebabkan panjang dilalui sebagai
PCRE2_ZERO_TERMINATED. (Apabila dipadankan melalui antara muka POSIX, pengubah suai ini mempunyai no
kesan, kerana tiada kemudahan untuk melepasi panjang.)
Apabila menguji pcre2_substitute(), pengubah suai ini juga mempunyai kesan lulus
rentetan gantian sebagai ditamatkan sifar.
Pemergian a NULL konteks
Biasanya, pcre2test melepasi blok konteks ke pcre2_match(), pcre2_dfa_match() or
pcre2_jit_match(). Jika null_context pengubah suai ditetapkan, bagaimanapun, NULL diluluskan. Ini adalah
untuk menguji bahawa fungsi padanan berfungsi dengan betul dalam kes ini (mereka menggunakan lalai
nilai). Pengubah suai ini tidak boleh digunakan dengan had_cari pengubah suai atau apabila menguji
fungsi penggantian.
THE ALTERNATIF PERTANDINGAN FUNGSI
Secara lalai, pcre2test menggunakan fungsi padanan PCRE2 standard, pcre2_match() untuk perlawanan
setiap baris subjek. PCRE2 juga menyokong fungsi pemadanan alternatif,
pcre2_dfa_match(), yang beroperasi dengan cara yang berbeza, dan mempunyai beberapa sekatan. The
perbezaan antara kedua-dua fungsi diterangkan dalam pcre2matching dokumentasi.
Jika hari pengubah suai ditetapkan, fungsi pemadanan alternatif digunakan. Fungsi ini
mencari semua kemungkinan padanan pada titik tertentu dalam subjek. Jika, bagaimanapun, dfa_shortest
pengubah suai ditetapkan, pemprosesan berhenti selepas padanan pertama ditemui. Ini sentiasa
perlawanan terpendek yang mungkin.
DEFAULT OUTPUT DARIPADA pcre2test
Bahagian ini menerangkan output apabila fungsi pemadanan biasa, pcre2_match(), Adalah
digunakan.
Apabila perlawanan berjaya, pcre2test mengeluarkan senarai subrentetan yang ditangkap, bermula dengan
nombor 0 untuk rentetan yang sepadan dengan keseluruhan corak. Jika tidak, ia mengeluarkan "Tiada padanan"
apabila pulangan ialah PCRE2_ERROR_NOMATCH, atau "Padanan separa:" diikuti dengan sebahagian
memadankan subrentetan apabila pulangan adalah PCRE2_ERROR_PARTIAL. (Perhatikan bahawa ini adalah keseluruhannya
subrentetan yang telah diperiksa semasa perlawanan separa; ia mungkin termasuk watak sebelum ini
perlawanan sebenar bermula jika penegasan melihat di belakang, \K, \b atau \B terlibat.)
Untuk sebarang pulangan lain, pcre2test mengeluarkan nombor ralat negatif PCRE2 dan pendek
frasa deskriptif. Jika ralat adalah semakan rentetan UTF yang gagal, unit kod mengimbangi
permulaan watak yang gagal juga dikeluarkan. Berikut adalah contoh interaktif
pcre2test berjalan.
$ pcre2test
PCRE2 versi 9.00 2014-05-10
semula> /^abc(\d+)/
data> abc123
0: abc123
1: 123
data> xyz
Tidak setanding
Nyahtetapkan subrentetan menangkap yang tidak diikuti dengan yang ditetapkan tidak ditunjukkan oleh
pcre2test melainkan semua tangkapan pengubahsuai ditentukan. Dalam contoh berikut, ada
ialah dua subrentetan penangkapan, tetapi apabila baris data pertama dipadankan, baris kedua tidak ditetapkan
subrentetan tidak ditunjukkan. Subrentetan tidak ditetapkan "dalaman" ditunjukkan sebagai " ", bagi
talian data kedua.
semula> /(a)|(b)/
data> a
0: a
1: a
data> b
0: b
1:
2: b
Jika rentetan mengandungi sebarang aksara bukan pencetakan, ia akan dikeluarkan sebagai \xhh terlepas jika
nilai kurang daripada 256 dan mod UTF tidak ditetapkan. Jika tidak, ia dikeluarkan sebagai \x{hh...}
melarikan diri. Lihat di bawah untuk definisi aksara bukan cetakan. Sekiranya /aftertext
pengubah suai ditetapkan, output untuk subrentetan 0 diikuti oleh subjek yang lain
rentetan, dikenal pasti oleh "0+" seperti ini:
re> /cat/aftertext
data> katarak
0: kucing
0+ arak
Jika padanan global diminta, keputusan percubaan padanan berturut-turut akan dikeluarkan
urutan, seperti ini:
semula> /\Bi(\w\w)/g
data> Mississippi
0: ialah
1: ss
0: ialah
1: ss
0: ipp
1: ms
"Tiada padanan" dikeluarkan hanya jika percubaan perlawanan pertama gagal. Berikut adalah contoh a
mesej kegagalan (offset 4 yang ditentukan oleh mengimbangi pengubahsuai telah melepasi penghujung
rentetan subjek):
semula> /xyz/
data> xyz\=offset=4
Ralat -24 (nilai offset buruk)
Ambil perhatian bahawa walaupun corak boleh diteruskan melalui beberapa baris (gesaan ">" biasa digunakan
untuk sambungan), baris subjek mungkin tidak. Walau bagaimanapun, baris baharu boleh dimasukkan ke dalam subjek
melalui \n melarikan diri (atau \r, \r\n, dsb., bergantung pada tetapan jujukan baris baharu).
OUTPUT DARIPADA THE ALTERNATIF PERTANDINGAN FUNGSI
Apabila fungsi padanan alternatif, pcre2_dfa_match(), digunakan, output terdiri daripada
senarai semua perlawanan yang bermula pada titik pertama dalam subjek di mana terdapat pada
sekurang-kurangnya satu perlawanan. Sebagai contoh:
re> /(tang|tangerine|tan)/
data> tangerine kuning\=dfa
0: tangerin
1: tang
2: sawo matang
Menggunakan fungsi padanan biasa pada data ini hanya menemui "tang". Padanan paling lama
rentetan sentiasa diberi dahulu (dan bernombor sifar). Selepas pulangan PCRE2_ERROR_PARTIAL,
output ialah "Padanan separa:", diikuti dengan subrentetan separa sepadan. Perhatikan bahawa ini
ialah keseluruhan subrentetan yang telah diperiksa semasa perlawanan separa; ia mungkin termasuk
watak-watak sebelum perlawanan sebenar bermula jika melihat di belakang penegasan, \b atau \B adalah
terbabit. (\K tidak disokong untuk padanan DFA.)
Jika padanan global diminta, carian untuk perlawanan selanjutnya disambung semula pada penghujung
perlawanan terpanjang. Sebagai contoh:
re> /(tang|tangerine|tan)/g
data> tangerine kuning dan sultana masam\=dfa
0: tangerin
1: tang
2: sawo matang
0: tang
1: sawo matang
0: sawo matang
Fungsi padanan alternatif tidak menyokong tangkapan subrentetan, jadi pengubah suai
yang berkenaan dengan subrentetan yang ditangkap tidak berkaitan.
MULAKAN SEMULA SELEPAS A BAHAGIAN MATCH
Apabila fungsi padanan alternatif telah memberikan pulangan PCRE2_ERROR_PARTIAL,
menunjukkan bahawa subjek sebahagiannya sepadan dengan corak, anda boleh memulakan semula padanan dengan
data subjek tambahan melalui dfa_restart pengubahsuai. Sebagai contoh:
semula> /^\d?\d(jan|feb|mar|apr|may|jun|jul|ogos|sep|okt|nov|dis)\d\d$/
data> 23ja\=P,dfa
Perlawanan separa: 23ja
data> n05\=dfa,dfa_restart
0: n05
Untuk maklumat lanjut tentang padanan separa, lihat bahagian pcre2partial dokumentasi.
MAKLUMAT
Jika corak mengandungi sebarang permintaan butiran, pcre2testfungsi serlahan ciri dipanggil
semasa padanan melainkan butiran_tiada dinyatakan. Ini berfungsi dengan kedua-dua padanan
fungsi.
Fungsi butiran dalam pcre2test mengembalikan sifar (teruskan padanan) secara lalai, tetapi anda boleh
gunakan a petak bual_fail pengubah suai dalam baris subjek (seperti yang diterangkan di atas) untuk menukar ini dan
parameter lain serlahan ciri.
Memasukkan butiran boleh membantu semasa menggunakan pcre2test untuk memeriksa rumit biasa
ungkapan. Untuk maklumat lanjut tentang butiran, lihat pcre2callout dokumentasi.
Output untuk serlahan ciri dengan argumen berangka dan yang mempunyai argumen rentetan ialah
berbeza sedikit.
Maklumat bersama berangka hujah
Secara lalai, fungsi butiran memaparkan nombor butiran, permulaan dan semasa
kedudukan dalam teks subjek pada masa serlahan ciri, dan item corak seterusnya untuk diuji.
Sebagai contoh:
--->pqrabcdef
0 ^ ^ \d
Output ini menunjukkan bahawa serlahan ciri nombor 0 berlaku untuk percubaan perlawanan bermula pada
aksara keempat rentetan subjek, apabila penunjuk berada pada aksara ketujuh, dan
apabila item corak seterusnya ialah \d. Hanya satu circumflex adalah output jika permulaan dan semasa
jawatan adalah sama.
Petak bual bernombor 255 diandaikan sebagai petak bual automatik, disisipkan hasil daripada
/auto_callout pengubah suai corak. Dalam kes ini, bukannya menunjukkan nombor butiran, sebaliknya
diimbangi dalam corak, didahului dengan tambah, ialah output. Sebagai contoh:
re> /\d?[AE]\*/auto_callout
data> E*
--->E*
+0 ^ \d?
+3 ^ [AE]
+8 ^^ \*
+10 ^ ^
0: E*
Jika corak mengandungi item (*MARK), baris tambahan akan dikeluarkan setiap kali perubahan
tanda terkini dihantar ke fungsi serlahan ciri. Sebagai contoh:
re> /a(*MARK:X)bc/auto_callout
data> abc
--->abc
+0 ^ a
+1 ^^ (*MARKAH:X)
+10 ^^ b
Markah Terkini: X
+11 ^ ^ c
+12 ^ ^
0: abc
Tanda berubah antara padanan "a" dan "b", tetapi kekal sama untuk bahagian yang lain
padankan, jadi tiada lagi yang akan dikeluarkan. Jika, akibat menjejak ke belakang, tanda itu kembali kepada
tidak ditetapkan, teks " "adalah output.
Maklumat bersama rentetan hujah
Output untuk serlahan ciri dengan hujah rentetan adalah serupa, kecuali sebaliknya
mengeluarkan nombor butiran sebelum penunjuk kedudukan, rentetan butiran dannya
offset dalam rentetan corak adalah output sebelum pantulan rentetan subjek, dan
rentetan subjek ditunjukkan untuk setiap butiran. Sebagai contoh:
re> /^ab(?C'first')cd(?C"second")ef/
data> abcdefg
Petak bual (7): 'pertama'
--->abcdefg
^^ c
Petak bual (20): "kedua"
--->abcdefg
^^ e
0: abcdef
BUKAN CETAK WATAK
Bila pcre2test sedang mengeluarkan teks dalam versi terkumpul corak, bait selain daripada
32-126 sentiasa dianggap sebagai aksara bukan pencetakan dan oleh itu ditunjukkan sebagai heks
melarikan diri.
Bila pcre2test sedang mengeluarkan teks yang merupakan bahagian yang dipadankan daripada rentetan subjek, ia berkelakuan
dengan cara yang sama, melainkan tempat yang berbeza telah ditetapkan untuk corak (menggunakan /tempatan
pengubah suai). Dalam kes ini, isprint () fungsi digunakan untuk membezakan percetakan dan bukan
mencetak aksara.
SAVING DAN PEMULIHAN DISUSUN CORAK
Ia adalah mungkin untuk menyimpan corak yang disusun pada cakera atau di tempat lain, dan memuat semulanya kemudian,
tertakluk kepada beberapa sekatan. Data JIT tidak boleh disimpan. Tuan rumah yang
corak yang dimuat semula mestilah menjalankan versi PCRE2 yang sama, dengan unit kod yang sama
lebar, dan mesti juga mempunyai endian, lebar penunjuk dan jenis PCRE2_SIZE yang sama. Sebelum ini
corak yang disusun boleh disimpan ia mesti bersiri, iaitu, ditukar kepada aliran
bait. Strim bait tunggal mungkin mengandungi apa-apa bilangan corak yang disusun, tetapi semuanya mesti
gunakan jadual aksara yang sama. Satu salinan jadual disertakan dalam aliran bait
(saiznya ialah 1088 bait).
Fungsi yang namanya bermula dengan pcre2_serialize_ digunakan untuk bersiri dan de-
bersiri. Mereka diterangkan dalam pcre2serialize dokumentasi. Dalam bahagian ini kita
menerangkan ciri-ciri pcre2test yang boleh digunakan untuk menguji fungsi ini.
Apabila corak dengan menolak pengubah suai berjaya disusun, ia ditolak ke dalam timbunan
corak yang disusun, dan pcre2test menjangkakan baris seterusnya mengandungi corak baharu (atau
perintah) bukannya baris subjek. Dengan cara ini, beberapa corak boleh disusun
dan dikekalkan. The menolak pengubah suai tidak serasi dengan posix, dan mengawal pengubah suai yang bertindak
pada masa perlawanan diabaikan (dengan mesej). The jitverify pengubah suai terpakai hanya pada penyusunan
masa. Perintah itu
#simpan
menyebabkan semua corak bertindan disiri dan hasilnya ditulis pada fail bernama.
Selepas itu, semua corak bertindan dibebaskan. Perintah itu
#muat
membaca data dalam fail, dan kemudian mengatur agar ia dinyahsiri, dengan
menghasilkan corak terkumpul ditambah pada timbunan corak. Corak di bahagian atas
timbunan boleh diambil dengan arahan #pop, yang mesti diikuti oleh baris subjek
yang akan dipadankan dengan corak, ditamatkan seperti biasa dengan baris kosong atau hujung
fail. Perintah ini mungkin diikuti oleh senarai pengubah suai yang mengandungi hanya pengubah kawalan
tindakan itu selepas corak telah disusun. khususnya, heks, posix, dan menolak tidak
dibenarkan, begitu juga sebarang pengubah tetapan pilihan. Pengubah suai JIT adalah, walau bagaimanapun dibenarkan.
Berikut ialah contoh yang menyimpan dan memuatkan semula dua corak.
/abc/push
/xyz/tolak
#simpan tempfile
#muat tempfile
#info pop
xyz
#pop jit,bincode
abc
If jitverify digunakan dengan #pop, ia tidak secara automatik membayangkan jit, yang berbeza
tingkah laku daripada apabila ia digunakan pada corak.
Gunakan pcre2test dalam talian menggunakan perkhidmatan onworks.net