12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534 |
- # This set of tests checks the API, internals, and non-Perl stuff for UTF
- # support, including Unicode properties. However, tests that give different
- # results in 8-bit, 16-bit, and 32-bit modes are excluded (see tests 10 and
- # 12).
- #newline_default lf any anycrlf
- # PCRE2 and Perl disagree about the characteristics of certain Unicode
- # characters. For example, 061C was considered by Perl to be Arabic, though
- # it was not listed as such in the Unicode Scripts.txt file for Unicode 8.
- # However, it *is* in that file for Unicode 10, but when I came to re-check,
- # Perl had changed in the meantime, with 5.026 not recognizing it as Arabic.
- # 2066-2069 are graphic and printable according to Perl, though they are
- # actually "isolate" control characters. That is why the following tests are
- # here rather than in test 4.
- /^[\p{Arabic}]/utf
- \x{061c}
- 0: \x{61c}
- /^[[:graph:]]+$/utf,ucp
- \= Expect no match
- \x{61c}
- No match
- \x{2066}
- No match
- \x{2067}
- No match
- \x{2068}
- No match
- \x{2069}
- No match
- /^[[:print:]]+$/utf,ucp
- \= Expect no match
- \x{61c}
- No match
- \x{2066}
- No match
- \x{2067}
- No match
- \x{2068}
- No match
- \x{2069}
- No match
- /^[[:^graph:]]+$/utf,ucp
- \x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{61c}\x{1680}
- 0: \x{09}\x{0a}\x{1d} \x{85}\x{a0}\x{61c}\x{1680}
- \x{2028}\x{2029}\x{202f}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}
- 0: \x{2028}\x{2029}\x{202f}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}
- /^[[:^print:]]+$/utf,ucp
- \x{09}\x{1D}\x{85}\x{61c}\x{2028}\x{2029}\x{2065}\x{2066}\x{2067}
- 0: \x{09}\x{1d}\x{85}\x{61c}\x{2028}\x{2029}\x{2065}\x{2066}\x{2067}
- \x{2068}\x{2069}
- 0: \x{2068}\x{2069}
- # Perl does not consider U+180e to be a space character. It is true that it
- # does not appear in the Unicode PropList.txt file as such, but in many other
- # sources it is listed as a space, and has been treated as such in PCRE for
- # a long time.
- /^>[[:blank:]]*/utf,ucp
- >\x{20}\x{a0}\x{1680}\x{180e}\x{2000}\x{202f}\x{9}\x{b}\x{2028}
- 0: > \x{a0}\x{1680}\x{180e}\x{2000}\x{202f}\x{09}
- /^A\s+Z/utf,ucp
- A\x{85}\x{180e}\x{2005}Z
- 0: A\x{85}\x{180e}\x{2005}Z
- /^A[\s]+Z/utf,ucp
- A\x{2005}Z
- 0: A\x{2005}Z
- A\x{85}\x{2005}Z
- 0: A\x{85}\x{2005}Z
- /^[[:graph:]]+$/utf,ucp
- \= Expect no match
- \x{180e}
- No match
- /^[[:print:]]+$/utf,ucp
- \x{180e}
- 0: \x{180e}
- /^[[:^graph:]]+$/utf,ucp
- \x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{61c}\x{1680}\x{180e}
- 0: \x{09}\x{0a}\x{1d} \x{85}\x{a0}\x{61c}\x{1680}\x{180e}
- /^[[:^print:]]+$/utf,ucp
- \= Expect no match
- \x{180e}
- No match
- # End of U+180E tests.
- # ---------------------------------------------------------------------
- /\x{110000}/IB,utf
- Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large
- /\o{4200000}/IB,utf
- Failed: error 134 at offset 10: character code point value in \x{} or \o{} is too large
- /\x{ffffffff}/utf
- Failed: error 134 at offset 11: character code point value in \x{} or \o{} is too large
- /\o{37777777777}/utf
- Failed: error 134 at offset 14: character code point value in \x{} or \o{} is too large
- /\x{100000000}/utf
- Failed: error 134 at offset 12: character code point value in \x{} or \o{} is too large
- /\o{77777777777}/utf
- Failed: error 134 at offset 14: character code point value in \x{} or \o{} is too large
- /\x{d800}/utf
- Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
- /\o{154000}/utf
- Failed: error 173 at offset 9: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
- /\x{dfff}/utf
- Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
- /\o{157777}/utf
- Failed: error 173 at offset 9: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
- /\x{d7ff}/utf
- /\o{153777}/utf
- /\x{e000}/utf
- /\o{170000}/utf
- /^\x{100}a\x{1234}/utf
- \x{100}a\x{1234}bcd
- 0: \x{100}a\x{1234}
- /\x{0041}\x{2262}\x{0391}\x{002e}/IB,utf
- ------------------------------------------------------------------
- Bra
- A\x{2262}\x{391}.
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Options: utf
- First code unit = 'A'
- Last code unit = '.'
- Subject length lower bound = 4
- \x{0041}\x{2262}\x{0391}\x{002e}
- 0: A\x{2262}\x{391}.
- /.{3,5}X/IB,utf
- ------------------------------------------------------------------
- Bra
- Any{3}
- Any{0,2}
- X
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Options: utf
- Last code unit = 'X'
- Subject length lower bound = 4
- \x{212ab}\x{212ab}\x{212ab}\x{861}X
- 0: \x{212ab}\x{212ab}\x{212ab}\x{861}X
- /.{3,5}?/IB,utf
- ------------------------------------------------------------------
- Bra
- Any{3}
- Any{0,2}?
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Options: utf
- Subject length lower bound = 3
- \x{212ab}\x{212ab}\x{212ab}\x{861}
- 0: \x{212ab}\x{212ab}\x{212ab}
- /^[ab]/IB,utf
- ------------------------------------------------------------------
- Bra
- ^
- [ab]
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Compile options: utf
- Overall options: anchored utf
- Starting code units: a b
- Subject length lower bound = 1
- bar
- 0: b
- \= Expect no match
- c
- No match
- \x{ff}
- No match
- \x{100}
- No match
- /\x{100}*(\d+|"(?1)")/utf
- 1234
- 0: 1234
- 1: 1234
- "1234"
- 0: "1234"
- 1: "1234"
- \x{100}1234
- 0: \x{100}1234
- 1: 1234
- "\x{100}1234"
- 0: \x{100}1234
- 1: 1234
- \x{100}\x{100}12ab
- 0: \x{100}\x{100}12
- 1: 12
- \x{100}\x{100}"12"
- 0: \x{100}\x{100}"12"
- 1: "12"
- \= Expect no match
- \x{100}\x{100}abcd
- No match
- /\x{100}*/IB,utf
- ------------------------------------------------------------------
- Bra
- \x{100}*+
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- May match empty string
- Options: utf
- Subject length lower bound = 0
- /a\x{100}*/IB,utf
- ------------------------------------------------------------------
- Bra
- a
- \x{100}*+
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Options: utf
- First code unit = 'a'
- Subject length lower bound = 1
- /ab\x{100}*/IB,utf
- ------------------------------------------------------------------
- Bra
- ab
- \x{100}*+
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Options: utf
- First code unit = 'a'
- Last code unit = 'b'
- Subject length lower bound = 2
- /[\x{200}-\x{100}]/utf
- Failed: error 108 at offset 15: range out of order in character class
- /[Ä€-Ä„]/utf
- \x{100}
- 0: \x{100}
- \x{104}
- 0: \x{104}
- \= Expect no match
- \x{105}
- No match
- \x{ff}
- No match
- /[\xFF]/IB
- ------------------------------------------------------------------
- Bra
- \x{ff}
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- First code unit = \xff
- Subject length lower bound = 1
- >\xff<
- 0: \xff
- /[^\xFF]/IB
- ------------------------------------------------------------------
- Bra
- [^\x{ff}]
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Subject length lower bound = 1
- /[Ä-Ü]/utf
- Ö # Matches without Study
- 0: \x{d6}
- \x{d6}
- 0: \x{d6}
- /[Ä-Ü]/utf
- Ö <-- Same with Study
- 0: \x{d6}
- \x{d6}
- 0: \x{d6}
- /[\x{c4}-\x{dc}]/utf
- Ö # Matches without Study
- 0: \x{d6}
- \x{d6}
- 0: \x{d6}
- /[\x{c4}-\x{dc}]/utf
- Ö <-- Same with Study
- 0: \x{d6}
- \x{d6}
- 0: \x{d6}
- /[^\x{100}]abc(xyz(?1))/IB,utf
- ------------------------------------------------------------------
- Bra
- [^\x{100}]
- abc
- CBra 1
- xyz
- Recurse
- Ket
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 1
- Options: utf
- Last code unit = 'z'
- Subject length lower bound = 7
- /(\x{100}(b(?2)c))?/IB,utf
- ------------------------------------------------------------------
- Bra
- Brazero
- CBra 1
- \x{100}
- CBra 2
- b
- Recurse
- c
- Ket
- Ket
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 2
- May match empty string
- Options: utf
- Subject length lower bound = 0
- /(\x{100}(b(?2)c)){0,2}/IB,utf
- ------------------------------------------------------------------
- Bra
- Brazero
- Bra
- CBra 1
- \x{100}
- CBra 2
- b
- Recurse
- c
- Ket
- Ket
- Brazero
- CBra 1
- \x{100}
- CBra 2
- b
- Recurse
- c
- Ket
- Ket
- Ket
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 2
- May match empty string
- Options: utf
- Subject length lower bound = 0
- /(\x{100}(b(?1)c))?/IB,utf
- ------------------------------------------------------------------
- Bra
- Brazero
- CBra 1
- \x{100}
- CBra 2
- b
- Recurse
- c
- Ket
- Ket
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 2
- May match empty string
- Options: utf
- Subject length lower bound = 0
- /(\x{100}(b(?1)c)){0,2}/IB,utf
- ------------------------------------------------------------------
- Bra
- Brazero
- Bra
- CBra 1
- \x{100}
- CBra 2
- b
- Recurse
- c
- Ket
- Ket
- Brazero
- CBra 1
- \x{100}
- CBra 2
- b
- Recurse
- c
- Ket
- Ket
- Ket
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 2
- May match empty string
- Options: utf
- Subject length lower bound = 0
- /\W/utf
- A.B
- 0: .
- A\x{100}B
- 0: \x{100}
- /\w/utf
- \x{100}X
- 0: X
- # Use no_start_optimize because the first code unit is different in 8-bit from
- # the wider modes.
- /^\ሴ/IB,utf,no_start_optimize
- ------------------------------------------------------------------
- Bra
- ^
- \x{1234}
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Compile options: no_start_optimize utf
- Overall options: anchored no_start_optimize utf
- /()()()()()()()()()()
- ()()()()()()()()()()
- ()()()()()()()()()()
- ()()()()()()()()()()
- A (x) (?41) B/x,utf
- AxxB
- Matched, but too many substrings
- 0: AxxB
- 1:
- 2:
- 3:
- 4:
- 5:
- 6:
- 7:
- 8:
- 9:
- 10:
- 11:
- 12:
- 13:
- 14:
- /^[\x{100}\E-\Q\E\x{150}]/B,utf
- ------------------------------------------------------------------
- Bra
- ^
- [\x{100}-\x{150}]
- Ket
- End
- ------------------------------------------------------------------
- /^[\QĀ\E-\Q�\E]/B,utf
- ------------------------------------------------------------------
- Bra
- ^
- [\x{100}-\x{150}]
- Ket
- End
- ------------------------------------------------------------------
- /^abc./gmx,newline=any,utf
- abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK
- 0: abc1
- 0: abc2
- 0: abc3
- 0: abc4
- 0: abc5
- 0: abc6
- 0: abc7
- 0: abc8
- 0: abc9
- /abc.$/gmx,newline=any,utf
- abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x{0085} abc7\x{2028} abc8\x{2029} abc9
- 0: abc1
- 0: abc2
- 0: abc3
- 0: abc4
- 0: abc5
- 0: abc6
- 0: abc7
- 0: abc8
- 0: abc9
- /^a\Rb/bsr=unicode,utf
- a\nb
- 0: a\x{0a}b
- a\rb
- 0: a\x{0d}b
- a\r\nb
- 0: a\x{0d}\x{0a}b
- a\x0bb
- 0: a\x{0b}b
- a\x0cb
- 0: a\x{0c}b
- a\x{85}b
- 0: a\x{85}b
- a\x{2028}b
- 0: a\x{2028}b
- a\x{2029}b
- 0: a\x{2029}b
- \= Expect no match
- a\n\rb
- No match
- /^a\R*b/bsr=unicode,utf
- ab
- 0: ab
- a\nb
- 0: a\x{0a}b
- a\rb
- 0: a\x{0d}b
- a\r\nb
- 0: a\x{0d}\x{0a}b
- a\x0bb
- 0: a\x{0b}b
- a\x0c\x{2028}\x{2029}b
- 0: a\x{0c}\x{2028}\x{2029}b
- a\x{85}b
- 0: a\x{85}b
- a\n\rb
- 0: a\x{0a}\x{0d}b
- a\n\r\x{85}\x0cb
- 0: a\x{0a}\x{0d}\x{85}\x{0c}b
- /^a\R+b/bsr=unicode,utf
- a\nb
- 0: a\x{0a}b
- a\rb
- 0: a\x{0d}b
- a\r\nb
- 0: a\x{0d}\x{0a}b
- a\x0bb
- 0: a\x{0b}b
- a\x0c\x{2028}\x{2029}b
- 0: a\x{0c}\x{2028}\x{2029}b
- a\x{85}b
- 0: a\x{85}b
- a\n\rb
- 0: a\x{0a}\x{0d}b
- a\n\r\x{85}\x0cb
- 0: a\x{0a}\x{0d}\x{85}\x{0c}b
- \= Expect no match
- ab
- No match
- /^a\R{1,3}b/bsr=unicode,utf
- a\nb
- 0: a\x{0a}b
- a\n\rb
- 0: a\x{0a}\x{0d}b
- a\n\r\x{85}b
- 0: a\x{0a}\x{0d}\x{85}b
- a\r\n\r\nb
- 0: a\x{0d}\x{0a}\x{0d}\x{0a}b
- a\r\n\r\n\r\nb
- 0: a\x{0d}\x{0a}\x{0d}\x{0a}\x{0d}\x{0a}b
- a\n\r\n\rb
- 0: a\x{0a}\x{0d}\x{0a}\x{0d}b
- a\n\n\r\nb
- 0: a\x{0a}\x{0a}\x{0d}\x{0a}b
- \= Expect no match
- a\n\n\n\rb
- No match
- a\r
- No match
- /\H\h\V\v/utf
- X X\x0a
- 0: X X\x{0a}
- X\x09X\x0b
- 0: X\x{09}X\x{0b}
- \= Expect no match
- \x{a0} X\x0a
- No match
- /\H*\h+\V?\v{3,4}/utf
- \x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
- 0: \x{09} \x{a0}X\x{0a}\x{0b}\x{0c}\x{0d}
- \x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a
- 0: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}\x{0d}
- \x09\x20\x{a0}\x0a\x0b\x0c
- 0: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}
- \= Expect no match
- \x09\x20\x{a0}\x0a\x0b
- No match
- /\H\h\V\v/utf
- \x{3001}\x{3000}\x{2030}\x{2028}
- 0: \x{3001}\x{3000}\x{2030}\x{2028}
- X\x{180e}X\x{85}
- 0: X\x{180e}X\x{85}
- \= Expect no match
- \x{2009} X\x0a
- No match
- /\H*\h+\V?\v{3,4}/utf
- \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a
- 0: \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x{0c}\x{0d}
- \x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a
- 0: \x{09}\x{205f}\x{a0}\x{0a}\x{2029}\x{0c}\x{2028}
- \x09\x20\x{202f}\x0a\x0b\x0c
- 0: \x{09} \x{202f}\x{0a}\x{0b}\x{0c}
- \= Expect no match
- \x09\x{200a}\x{a0}\x{2028}\x0b
- No match
- /[\h]/B,utf
- ------------------------------------------------------------------
- Bra
- [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}]
- Ket
- End
- ------------------------------------------------------------------
- >\x{1680}
- 0: \x{1680}
- /[\h]{3,}/B,utf
- ------------------------------------------------------------------
- Bra
- [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}]{3,}+
- Ket
- End
- ------------------------------------------------------------------
- >\x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}<
- 0: \x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}
- /[\v]/B,utf
- ------------------------------------------------------------------
- Bra
- [\x0a-\x0d\x85\x{2028}-\x{2029}]
- Ket
- End
- ------------------------------------------------------------------
- /[\H]/B,utf
- ------------------------------------------------------------------
- Bra
- [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff\x{100}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{10ffff}]
- Ket
- End
- ------------------------------------------------------------------
- /[\V]/B,utf
- ------------------------------------------------------------------
- Bra
- [\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{202a}-\x{10ffff}]
- Ket
- End
- ------------------------------------------------------------------
- /.*$/newline=any,utf
- \x{1ec5}
- 0: \x{1ec5}
- /a\Rb/I,bsr=anycrlf,utf
- Capture group count = 0
- Options: utf
- \R matches CR, LF, or CRLF
- First code unit = 'a'
- Last code unit = 'b'
- Subject length lower bound = 3
- a\rb
- 0: a\x{0d}b
- a\nb
- 0: a\x{0a}b
- a\r\nb
- 0: a\x{0d}\x{0a}b
- \= Expect no match
- a\x{85}b
- No match
- a\x0bb
- No match
- /a\Rb/I,bsr=unicode,utf
- Capture group count = 0
- Options: utf
- \R matches any Unicode newline
- First code unit = 'a'
- Last code unit = 'b'
- Subject length lower bound = 3
- a\rb
- 0: a\x{0d}b
- a\nb
- 0: a\x{0a}b
- a\r\nb
- 0: a\x{0d}\x{0a}b
- a\x{85}b
- 0: a\x{85}b
- a\x0bb
- 0: a\x{0b}b
- /a\R?b/I,bsr=anycrlf,utf
- Capture group count = 0
- Options: utf
- \R matches CR, LF, or CRLF
- First code unit = 'a'
- Last code unit = 'b'
- Subject length lower bound = 2
- a\rb
- 0: a\x{0d}b
- a\nb
- 0: a\x{0a}b
- a\r\nb
- 0: a\x{0d}\x{0a}b
- \= Expect no match
- a\x{85}b
- No match
- a\x0bb
- No match
- /a\R?b/I,bsr=unicode,utf
- Capture group count = 0
- Options: utf
- \R matches any Unicode newline
- First code unit = 'a'
- Last code unit = 'b'
- Subject length lower bound = 2
- a\rb
- 0: a\x{0d}b
- a\nb
- 0: a\x{0a}b
- a\r\nb
- 0: a\x{0d}\x{0a}b
- a\x{85}b
- 0: a\x{85}b
- a\x0bb
- 0: a\x{0b}b
- /.*a.*=.b.*/utf,newline=any
- QQQ\x{2029}ABCaXYZ=!bPQR
- 0: ABCaXYZ=!bPQR
- \= Expect no match
- a\x{2029}b
- No match
- \x61\xe2\x80\xa9\x62
- No match
- /[[:a\x{100}b:]]/utf
- Failed: error 130 at offset 3: unknown POSIX class name
- /a[^]b/utf,allow_empty_class,match_unset_backref
- a\x{1234}b
- 0: a\x{1234}b
- a\nb
- 0: a\x{0a}b
- \= Expect no match
- ab
- No match
- /a[^]+b/utf,allow_empty_class,match_unset_backref
- aXb
- 0: aXb
- a\nX\nX\x{1234}b
- 0: a\x{0a}X\x{0a}X\x{1234}b
- \= Expect no match
- ab
- No match
- /(\x{de})\1/
- \x{de}\x{de}
- 0: \xde\xde
- 1: \xde
- /X/newline=any,utf,firstline
- A\x{1ec5}ABCXYZ
- 0: X
- /Xa{2,4}b/utf
- X\=ps
- Partial match: X
- Xa\=ps
- Partial match: Xa
- Xaa\=ps
- Partial match: Xaa
- Xaaa\=ps
- Partial match: Xaaa
- Xaaaa\=ps
- Partial match: Xaaaa
- /Xa{2,4}?b/utf
- X\=ps
- Partial match: X
- Xa\=ps
- Partial match: Xa
- Xaa\=ps
- Partial match: Xaa
- Xaaa\=ps
- Partial match: Xaaa
- Xaaaa\=ps
- Partial match: Xaaaa
- /Xa{2,4}+b/utf
- X\=ps
- Partial match: X
- Xa\=ps
- Partial match: Xa
- Xaa\=ps
- Partial match: Xaa
- Xaaa\=ps
- Partial match: Xaaa
- Xaaaa\=ps
- Partial match: Xaaaa
- /X\x{123}{2,4}b/utf
- X\=ps
- Partial match: X
- X\x{123}\=ps
- Partial match: X\x{123}
- X\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}
- X\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}
- X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}\x{123}
- /X\x{123}{2,4}?b/utf
- X\=ps
- Partial match: X
- X\x{123}\=ps
- Partial match: X\x{123}
- X\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}
- X\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}
- X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}\x{123}
- /X\x{123}{2,4}+b/utf
- X\=ps
- Partial match: X
- X\x{123}\=ps
- Partial match: X\x{123}
- X\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}
- X\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}
- X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}\x{123}
- /X\x{123}{2,4}b/utf
- \= Expect no match
- Xx\=ps
- No match
- X\x{123}x\=ps
- No match
- X\x{123}\x{123}x\=ps
- No match
- X\x{123}\x{123}\x{123}x\=ps
- No match
- X\x{123}\x{123}\x{123}\x{123}x\=ps
- No match
- /X\x{123}{2,4}?b/utf
- \= Expect no match
- Xx\=ps
- No match
- X\x{123}x\=ps
- No match
- X\x{123}\x{123}x\=ps
- No match
- X\x{123}\x{123}\x{123}x\=ps
- No match
- X\x{123}\x{123}\x{123}\x{123}x\=ps
- No match
- /X\x{123}{2,4}+b/utf
- \= Expect no match
- Xx\=ps
- No match
- X\x{123}x\=ps
- No match
- X\x{123}\x{123}x\=ps
- No match
- X\x{123}\x{123}\x{123}x\=ps
- No match
- X\x{123}\x{123}\x{123}\x{123}x\=ps
- No match
- /X\d{2,4}b/utf
- X\=ps
- Partial match: X
- X3\=ps
- Partial match: X3
- X33\=ps
- Partial match: X33
- X333\=ps
- Partial match: X333
- X3333\=ps
- Partial match: X3333
- /X\d{2,4}?b/utf
- X\=ps
- Partial match: X
- X3\=ps
- Partial match: X3
- X33\=ps
- Partial match: X33
- X333\=ps
- Partial match: X333
- X3333\=ps
- Partial match: X3333
- /X\d{2,4}+b/utf
- X\=ps
- Partial match: X
- X3\=ps
- Partial match: X3
- X33\=ps
- Partial match: X33
- X333\=ps
- Partial match: X333
- X3333\=ps
- Partial match: X3333
- /X\D{2,4}b/utf
- X\=ps
- Partial match: X
- Xa\=ps
- Partial match: Xa
- Xaa\=ps
- Partial match: Xaa
- Xaaa\=ps
- Partial match: Xaaa
- Xaaaa\=ps
- Partial match: Xaaaa
- /X\D{2,4}?b/utf
- X\=ps
- Partial match: X
- Xa\=ps
- Partial match: Xa
- Xaa\=ps
- Partial match: Xaa
- Xaaa\=ps
- Partial match: Xaaa
- Xaaaa\=ps
- Partial match: Xaaaa
- /X\D{2,4}+b/utf
- X\=ps
- Partial match: X
- Xa\=ps
- Partial match: Xa
- Xaa\=ps
- Partial match: Xaa
- Xaaa\=ps
- Partial match: Xaaa
- Xaaaa\=ps
- Partial match: Xaaaa
- /X\D{2,4}b/utf
- X\=ps
- Partial match: X
- X\x{123}\=ps
- Partial match: X\x{123}
- X\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}
- X\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}
- X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}\x{123}
- /X\D{2,4}?b/utf
- X\=ps
- Partial match: X
- X\x{123}\=ps
- Partial match: X\x{123}
- X\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}
- X\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}
- X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}\x{123}
- /X\D{2,4}+b/utf
- X\=ps
- Partial match: X
- X\x{123}\=ps
- Partial match: X\x{123}
- X\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}
- X\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}
- X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}\x{123}
- /X[abc]{2,4}b/utf
- X\=ps
- Partial match: X
- Xa\=ps
- Partial match: Xa
- Xaa\=ps
- Partial match: Xaa
- Xaaa\=ps
- Partial match: Xaaa
- Xaaaa\=ps
- Partial match: Xaaaa
- /X[abc]{2,4}?b/utf
- X\=ps
- Partial match: X
- Xa\=ps
- Partial match: Xa
- Xaa\=ps
- Partial match: Xaa
- Xaaa\=ps
- Partial match: Xaaa
- Xaaaa\=ps
- Partial match: Xaaaa
- /X[abc]{2,4}+b/utf
- X\=ps
- Partial match: X
- Xa\=ps
- Partial match: Xa
- Xaa\=ps
- Partial match: Xaa
- Xaaa\=ps
- Partial match: Xaaa
- Xaaaa\=ps
- Partial match: Xaaaa
- /X[abc\x{123}]{2,4}b/utf
- X\=ps
- Partial match: X
- X\x{123}\=ps
- Partial match: X\x{123}
- X\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}
- X\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}
- X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}\x{123}
- /X[abc\x{123}]{2,4}?b/utf
- X\=ps
- Partial match: X
- X\x{123}\=ps
- Partial match: X\x{123}
- X\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}
- X\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}
- X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}\x{123}
- /X[abc\x{123}]{2,4}+b/utf
- X\=ps
- Partial match: X
- X\x{123}\=ps
- Partial match: X\x{123}
- X\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}
- X\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}
- X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}\x{123}
- /X[^a]{2,4}b/utf
- X\=ps
- Partial match: X
- Xz\=ps
- Partial match: Xz
- Xzz\=ps
- Partial match: Xzz
- Xzzz\=ps
- Partial match: Xzzz
- Xzzzz\=ps
- Partial match: Xzzzz
- /X[^a]{2,4}?b/utf
- X\=ps
- Partial match: X
- Xz\=ps
- Partial match: Xz
- Xzz\=ps
- Partial match: Xzz
- Xzzz\=ps
- Partial match: Xzzz
- Xzzzz\=ps
- Partial match: Xzzzz
- /X[^a]{2,4}+b/utf
- X\=ps
- Partial match: X
- Xz\=ps
- Partial match: Xz
- Xzz\=ps
- Partial match: Xzz
- Xzzz\=ps
- Partial match: Xzzz
- Xzzzz\=ps
- Partial match: Xzzzz
- /X[^a]{2,4}b/utf
- X\=ps
- Partial match: X
- X\x{123}\=ps
- Partial match: X\x{123}
- X\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}
- X\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}
- X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}\x{123}
- /X[^a]{2,4}?b/utf
- X\=ps
- Partial match: X
- X\x{123}\=ps
- Partial match: X\x{123}
- X\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}
- X\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}
- X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}\x{123}
- /X[^a]{2,4}+b/utf
- X\=ps
- Partial match: X
- X\x{123}\=ps
- Partial match: X\x{123}
- X\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}
- X\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}
- X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: X\x{123}\x{123}\x{123}\x{123}
- /(Y)X\1{2,4}b/utf
- YX\=ps
- Partial match: YX
- YXY\=ps
- Partial match: YXY
- YXYY\=ps
- Partial match: YXYY
- YXYYY\=ps
- Partial match: YXYYY
- YXYYYY\=ps
- Partial match: YXYYYY
- /(Y)X\1{2,4}?b/utf
- YX\=ps
- Partial match: YX
- YXY\=ps
- Partial match: YXY
- YXYY\=ps
- Partial match: YXYY
- YXYYY\=ps
- Partial match: YXYYY
- YXYYYY\=ps
- Partial match: YXYYYY
- /(Y)X\1{2,4}+b/utf
- YX\=ps
- Partial match: YX
- YXY\=ps
- Partial match: YXY
- YXYY\=ps
- Partial match: YXYY
- YXYYY\=ps
- Partial match: YXYYY
- YXYYYY\=ps
- Partial match: YXYYYY
- /(\x{123})X\1{2,4}b/utf
- \x{123}X\=ps
- Partial match: \x{123}X
- \x{123}X\x{123}\=ps
- Partial match: \x{123}X\x{123}
- \x{123}X\x{123}\x{123}\=ps
- Partial match: \x{123}X\x{123}\x{123}
- \x{123}X\x{123}\x{123}\x{123}\=ps
- Partial match: \x{123}X\x{123}\x{123}\x{123}
- \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}
- /(\x{123})X\1{2,4}?b/utf
- \x{123}X\=ps
- Partial match: \x{123}X
- \x{123}X\x{123}\=ps
- Partial match: \x{123}X\x{123}
- \x{123}X\x{123}\x{123}\=ps
- Partial match: \x{123}X\x{123}\x{123}
- \x{123}X\x{123}\x{123}\x{123}\=ps
- Partial match: \x{123}X\x{123}\x{123}\x{123}
- \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}
- /(\x{123})X\1{2,4}+b/utf
- \x{123}X\=ps
- Partial match: \x{123}X
- \x{123}X\x{123}\=ps
- Partial match: \x{123}X\x{123}
- \x{123}X\x{123}\x{123}\=ps
- Partial match: \x{123}X\x{123}\x{123}
- \x{123}X\x{123}\x{123}\x{123}\=ps
- Partial match: \x{123}X\x{123}\x{123}\x{123}
- \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps
- Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}
- /\bthe cat\b/utf
- the cat\=ps
- 0: the cat
- the cat\=ph
- Partial match: the cat
- /abcd*/utf
- xxxxabcd\=ps
- 0: abcd
- xxxxabcd\=ph
- Partial match: abcd
- /abcd*/i,utf
- xxxxabcd\=ps
- 0: abcd
- xxxxabcd\=ph
- Partial match: abcd
- XXXXABCD\=ps
- 0: ABCD
- XXXXABCD\=ph
- Partial match: ABCD
- /abc\d*/utf
- xxxxabc1\=ps
- 0: abc1
- xxxxabc1\=ph
- Partial match: abc1
- /(a)bc\1*/utf
- xxxxabca\=ps
- 0: abca
- 1: a
- xxxxabca\=ph
- Partial match: abca
- /abc[de]*/utf
- xxxxabcde\=ps
- 0: abcde
- xxxxabcde\=ph
- Partial match: abcde
- /X\W{3}X/utf
- X\=ps
- Partial match: X
- /\sxxx\s/utf,tables=2
- AB\x{85}xxx\x{a0}XYZ
- 0: \x{85}xxx\x{a0}
- AB\x{a0}xxx\x{85}XYZ
- 0: \x{a0}xxx\x{85}
- /\S \S/utf,tables=2
- \x{a2} \x{84}
- 0: \x{a2} \x{84}
- 'A#хц'Bx,newline=any,utf
- ------------------------------------------------------------------
- Bra
- A
- Ket
- End
- ------------------------------------------------------------------
- 'A#хц
- PQ'Bx,newline=any,utf
- ------------------------------------------------------------------
- Bra
- APQ
- Ket
- End
- ------------------------------------------------------------------
- /a+#Ñ…aa
- z#XX?/Bx,newline=any,utf
- ------------------------------------------------------------------
- Bra
- a++
- z
- Ket
- End
- ------------------------------------------------------------------
- /a+#Ñ…aa
- z#Ñ…?/Bx,newline=any,utf
- ------------------------------------------------------------------
- Bra
- a++
- z
- Ket
- End
- ------------------------------------------------------------------
- /\g{A}xxx#bXX(?'A'123)
(?'A'456)/Bx,newline=any,utf
- ------------------------------------------------------------------
- Bra
- \1
- xxx
- CBra 1
- 456
- Ket
- Ket
- End
- ------------------------------------------------------------------
- /\g{A}xxx#bÑ…(?'A'123)
(?'A'456)/Bx,newline=any,utf
- ------------------------------------------------------------------
- Bra
- \1
- xxx
- CBra 1
- 456
- Ket
- Ket
- End
- ------------------------------------------------------------------
- /^\cģ/utf
- Failed: error 168 at offset 3: \c must be followed by a printable ASCII character
- /(\R*)(.)/s,utf
- \r\n
- 0: \x{0d}
- 1:
- 2: \x{0d}
- \r\r\n\n\r
- 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
- 1: \x{0d}\x{0d}\x{0a}\x{0a}
- 2: \x{0d}
- \r\r\n\n\r\n
- 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
- 1: \x{0d}\x{0d}\x{0a}\x{0a}
- 2: \x{0d}
- /(\R)*(.)/s,utf
- \r\n
- 0: \x{0d}
- 1: <unset>
- 2: \x{0d}
- \r\r\n\n\r
- 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
- 1: \x{0a}
- 2: \x{0d}
- \r\r\n\n\r\n
- 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
- 1: \x{0a}
- 2: \x{0d}
- /[^\x{1234}]+/Ii,utf
- Capture group count = 0
- Options: caseless utf
- Subject length lower bound = 1
- /[^\x{1234}]+?/Ii,utf
- Capture group count = 0
- Options: caseless utf
- Subject length lower bound = 1
- /[^\x{1234}]++/Ii,utf
- Capture group count = 0
- Options: caseless utf
- Subject length lower bound = 1
- /[^\x{1234}]{2}/Ii,utf
- Capture group count = 0
- Options: caseless utf
- Subject length lower bound = 2
- /f.*/
- for\=ph
- Partial match: for
- /f.*/s
- for\=ph
- Partial match: for
- /f.*/utf
- for\=ph
- Partial match: for
- /f.*/s,utf
- for\=ph
- Partial match: for
- /\x{d7ff}\x{e000}/utf
- /\x{d800}/utf
- Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
- /\x{dfff}/utf
- Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
- /\h+/utf
- \x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
- 0: \x{1680}\x{2000}\x{202f}\x{3000}
- \x{3001}\x{2fff}\x{200a}\x{a0}\x{2000}
- 0: \x{200a}\x{a0}\x{2000}
- /[\h\x{e000}]+/B,utf
- ------------------------------------------------------------------
- Bra
- [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}\x{e000}]++
- Ket
- End
- ------------------------------------------------------------------
- \x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
- 0: \x{1680}\x{2000}\x{202f}\x{3000}
- \x{3001}\x{2fff}\x{200a}\x{a0}\x{2000}
- 0: \x{200a}\x{a0}\x{2000}
- /\H+/utf
- \x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
- 0: \x{167f}\x{1681}\x{180d}\x{180f}
- \x{2000}\x{200a}\x{1fff}\x{200b}
- 0: \x{1fff}\x{200b}
- \x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
- 0: \x{202e}\x{2030}\x{205e}\x{2060}
- \x{a0}\x{3000}\x{9f}\x{a1}\x{2fff}\x{3001}
- 0: \x{9f}\x{a1}\x{2fff}\x{3001}
- /[\H\x{d7ff}]+/B,utf
- ------------------------------------------------------------------
- Bra
- [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff\x{100}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{10ffff}\x{d7ff}]++
- Ket
- End
- ------------------------------------------------------------------
- \x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
- 0: \x{167f}\x{1681}\x{180d}\x{180f}
- \x{2000}\x{200a}\x{1fff}\x{200b}
- 0: \x{1fff}\x{200b}
- \x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
- 0: \x{202e}\x{2030}\x{205e}\x{2060}
- \x{a0}\x{3000}\x{9f}\x{a1}\x{2fff}\x{3001}
- 0: \x{9f}\x{a1}\x{2fff}\x{3001}
- /\v+/utf
- \x{2027}\x{2030}\x{2028}\x{2029}
- 0: \x{2028}\x{2029}
- \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
- 0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}
- /[\v\x{e000}]+/B,utf
- ------------------------------------------------------------------
- Bra
- [\x0a-\x0d\x85\x{2028}-\x{2029}\x{e000}]++
- Ket
- End
- ------------------------------------------------------------------
- \x{2027}\x{2030}\x{2028}\x{2029}
- 0: \x{2028}\x{2029}
- \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
- 0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}
- /\V+/utf
- \x{2028}\x{2029}\x{2027}\x{2030}
- 0: \x{2027}\x{2030}
- \x{85}\x0a\x0b\x0c\x0d\x09\x0e\x{84}\x{86}
- 0: \x{09}\x{0e}\x{84}\x{86}
- /[\V\x{d7ff}]+/B,utf
- ------------------------------------------------------------------
- Bra
- [\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{202a}-\x{10ffff}\x{d7ff}]++
- Ket
- End
- ------------------------------------------------------------------
- \x{2028}\x{2029}\x{2027}\x{2030}
- 0: \x{2027}\x{2030}
- \x{85}\x0a\x0b\x0c\x0d\x09\x0e\x{84}\x{86}
- 0: \x{09}\x{0e}\x{84}\x{86}
- /\R+/bsr=unicode,utf
- \x{2027}\x{2030}\x{2028}\x{2029}
- 0: \x{2028}\x{2029}
- \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
- 0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}
- /(..)\1/utf
- ab\=ps
- Partial match: ab
- aba\=ps
- Partial match: aba
- abab\=ps
- 0: abab
- 1: ab
- /(..)\1/i,utf
- ab\=ps
- Partial match: ab
- abA\=ps
- Partial match: abA
- aBAb\=ps
- 0: aBAb
- 1: aB
- /(..)\1{2,}/utf
- ab\=ps
- Partial match: ab
- aba\=ps
- Partial match: aba
- abab\=ps
- Partial match: abab
- ababa\=ps
- Partial match: ababa
- ababab\=ps
- 0: ababab
- 1: ab
- ababab\=ph
- Partial match: ababab
- abababa\=ps
- 0: ababab
- 1: ab
- abababa\=ph
- Partial match: abababa
- /(..)\1{2,}/i,utf
- ab\=ps
- Partial match: ab
- aBa\=ps
- Partial match: aBa
- aBAb\=ps
- Partial match: aBAb
- AbaBA\=ps
- Partial match: AbaBA
- abABAb\=ps
- 0: abABAb
- 1: ab
- aBAbaB\=ph
- Partial match: aBAbaB
- abABabA\=ps
- 0: abABab
- 1: ab
- abaBABa\=ph
- Partial match: abaBABa
- /(..)\1{2,}?x/i,utf
- ab\=ps
- Partial match: ab
- abA\=ps
- Partial match: abA
- aBAb\=ps
- Partial match: aBAb
- abaBA\=ps
- Partial match: abaBA
- abAbaB\=ps
- Partial match: abAbaB
- abaBabA\=ps
- Partial match: abaBabA
- abAbABaBx\=ps
- 0: abAbABaBx
- 1: ab
- /./utf,newline=crlf
- \r\=ps
- 0: \x{0d}
- \r\=ph
- Partial match: \x{0d}
- /.{2,3}/utf,newline=crlf
- \r\=ps
- Partial match: \x{0d}
- \r\=ph
- Partial match: \x{0d}
- \r\r\=ps
- 0: \x{0d}\x{0d}
- \r\r\=ph
- Partial match: \x{0d}\x{0d}
- \r\r\r\=ps
- 0: \x{0d}\x{0d}\x{0d}
- \r\r\r\=ph
- Partial match: \x{0d}\x{0d}\x{0d}
- /.{2,3}?/utf,newline=crlf
- \r\=ps
- Partial match: \x{0d}
- \r\=ph
- Partial match: \x{0d}
- \r\r\=ps
- 0: \x{0d}\x{0d}
- \r\r\=ph
- Partial match: \x{0d}\x{0d}
- \r\r\r\=ps
- 0: \x{0d}\x{0d}
- \r\r\r\=ph
- 0: \x{0d}\x{0d}
- /[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/B,utf
- ------------------------------------------------------------------
- Bra
- [^\x{100}]
- [^\x{1234}]
- [^\x{ffff}]
- [^\x{10000}]
- [^\x{10ffff}]
- Ket
- End
- ------------------------------------------------------------------
- /[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/Bi,utf
- ------------------------------------------------------------------
- Bra
- /i [^\x{100}]
- /i [^\x{1234}]
- /i [^\x{ffff}]
- /i [^\x{10000}]
- /i [^\x{10ffff}]
- Ket
- End
- ------------------------------------------------------------------
- /[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/B,utf
- ------------------------------------------------------------------
- Bra
- [^\x{100}]*
- [^\x{10000}]+
- [^\x{10ffff}]??
- [^\x{8000}]{4}
- [^\x{8000}]*
- [^\x{7fff}]{2}
- [^\x{7fff}]{0,7}?
- [^\x{fffff}]{5}
- [^\x{fffff}]?+
- Ket
- End
- ------------------------------------------------------------------
- /[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/Bi,utf
- ------------------------------------------------------------------
- Bra
- /i [^\x{100}]*
- /i [^\x{10000}]+
- /i [^\x{10ffff}]??
- /i [^\x{8000}]{4}
- /i [^\x{8000}]*
- /i [^\x{7fff}]{2}
- /i [^\x{7fff}]{0,7}?
- /i [^\x{fffff}]{5}
- /i [^\x{fffff}]?+
- Ket
- End
- ------------------------------------------------------------------
- /(?<=\x{1234}\x{1234})\bxy/I,utf
- Capture group count = 0
- Max lookbehind = 2
- Options: utf
- First code unit = 'x'
- Last code unit = 'y'
- Subject length lower bound = 2
- /(?<!^)ETA/utf
- \= Expect no match
- ETA
- No match
- /\u0100/B,utf,alt_bsux,allow_empty_class,match_unset_backref
- ------------------------------------------------------------------
- Bra
- \x{100}
- Ket
- End
- ------------------------------------------------------------------
- /[\u0100-\u0200]/B,utf,alt_bsux,allow_empty_class,match_unset_backref
- ------------------------------------------------------------------
- Bra
- [\x{100}-\x{200}]
- Ket
- End
- ------------------------------------------------------------------
- /\ud800/utf,alt_bsux,allow_empty_class,match_unset_backref
- Failed: error 173 at offset 6: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
- /^\u{0000000000010ffff}/utf,extra_alt_bsux
- \x{10ffff}
- 0: \x{10ffff}
- /\u{ 1bb1}/utf,extra_alt_bsux
- u{ 1bb1}
- 0: u{ 1bb1}
- \= Expect no match
- \x{1bb1}
- No match
- /\u/utf,alt_bsux
- \\u
- 0: u
- /^a+[a\x{200}]/B,utf
- ------------------------------------------------------------------
- Bra
- ^
- a+
- [a\x{200}]
- Ket
- End
- ------------------------------------------------------------------
- aa
- 0: aa
- /[b-d\x{200}-\x{250}]*[ae-h]?#[\x{200}-\x{250}]{0,8}[\x00-\xff]*#[\x{200}-\x{250}]+[a-z]/B,utf
- ------------------------------------------------------------------
- Bra
- [b-d\x{200}-\x{250}]*+
- [ae-h]?+
- #
- [\x{200}-\x{250}]{0,8}+
- [\x00-\xff]*
- #
- [\x{200}-\x{250}]++
- [a-z]
- Ket
- End
- ------------------------------------------------------------------
- /[\p{L}]/IB
- ------------------------------------------------------------------
- Bra
- [\p{L}]
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Subject length lower bound = 1
- /[\p{^L}]/IB
- ------------------------------------------------------------------
- Bra
- [\P{L}]
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Subject length lower bound = 1
- /[\P{L}]/IB
- ------------------------------------------------------------------
- Bra
- [\P{L}]
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Subject length lower bound = 1
- /[\P{^L}]/IB
- ------------------------------------------------------------------
- Bra
- [\p{L}]
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Subject length lower bound = 1
- /[abc\p{L}\x{0660}]/IB,utf
- ------------------------------------------------------------------
- Bra
- [a-c\p{L}\x{660}]
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Options: utf
- Subject length lower bound = 1
- /[\p{Nd}]/IB,utf
- ------------------------------------------------------------------
- Bra
- [\p{Nd}]
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Options: utf
- Subject length lower bound = 1
- 1234
- 0: 1
- /[\p{Nd}+-]+/IB,utf
- ------------------------------------------------------------------
- Bra
- [+\-\p{Nd}]++
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Options: utf
- Subject length lower bound = 1
- 1234
- 0: 1234
- 12-34
- 0: 12-34
- 12+\x{661}-34
- 0: 12+\x{661}-34
- \= Expect no match
- abcd
- No match
- /(?:[\PPa*]*){8,}/
- /[\P{Any}]/B
- ------------------------------------------------------------------
- Bra
- [\P{Any}]
- Ket
- End
- ------------------------------------------------------------------
- /[\P{Any}\E]/B
- ------------------------------------------------------------------
- Bra
- [\P{Any}]
- Ket
- End
- ------------------------------------------------------------------
- /(\P{Yi}+\277)/
- /(\P{Yi}+\277)?/
- /(?<=\P{Yi}{3}A)X/
- /\p{Yi}+(\P{Yi}+)(?1)/
- /(\P{Yi}{2}\277)?/
- /[\P{Yi}A]/
- /[\P{Yi}\P{Yi}\P{Yi}A]/
- /[^\P{Yi}A]/
- /[^\P{Yi}\P{Yi}\P{Yi}A]/
- /(\P{Yi}*\277)*/
- /(\P{Yi}*?\277)*/
- /(\p{Yi}*+\277)*/
- /(\P{Yi}?\277)*/
- /(\P{Yi}??\277)*/
- /(\p{Yi}?+\277)*/
- /(\P{Yi}{0,3}\277)*/
- /(\P{Yi}{0,3}?\277)*/
- /(\p{Yi}{0,3}+\277)*/
- /\p{Zl}{2,3}+/B,utf
- ------------------------------------------------------------------
- Bra
- prop Zl {2}
- prop Zl ?+
- Ket
- End
- ------------------------------------------------------------------
- 


- 0: \x{2028}\x{2028}
- \x{2028}\x{2028}\x{2028}
- 0: \x{2028}\x{2028}\x{2028}
- /\p{Zl}/B,utf
- ------------------------------------------------------------------
- Bra
- prop Zl
- Ket
- End
- ------------------------------------------------------------------
- /\p{Lu}{3}+/B,utf
- ------------------------------------------------------------------
- Bra
- prop Lu {3}
- Ket
- End
- ------------------------------------------------------------------
- /\pL{2}+/B,utf
- ------------------------------------------------------------------
- Bra
- prop L {2}
- Ket
- End
- ------------------------------------------------------------------
- /\p{Cc}{2}+/B,utf
- ------------------------------------------------------------------
- Bra
- prop Cc {2}
- Ket
- End
- ------------------------------------------------------------------
- /^\p{Cf}/utf
- \x{180e}
- 0: \x{180e}
- \x{061c}
- 0: \x{61c}
- \x{2066}
- 0: \x{2066}
- \x{2067}
- 0: \x{2067}
- \x{2068}
- 0: \x{2068}
- \x{2069}
- 0: \x{2069}
- /^\p{Cs}/utf
- \x{dfff}\=no_utf_check
- 0: \x{dfff}
- \= Expect no match
- \x{09f}
- No match
- /^\p{Mn}/utf
- \x{1a1b}
- 0: \x{1a1b}
- /^\p{Pe}/utf
- \x{2309}
- 0: \x{2309}
- \x{230b}
- 0: \x{230b}
- /^\p{Ps}/utf
- \x{2308}
- 0: \x{2308}
- \x{230a}
- 0: \x{230a}
- /^\p{Sc}+/utf
- $\x{a2}\x{a3}\x{a4}\x{a5}\x{a6}
- 0: $\x{a2}\x{a3}\x{a4}\x{a5}
- \x{9f2}
- 0: \x{9f2}
- \= Expect no match
- X
- No match
- \x{2c2}
- No match
- /^\p{Zs}/utf
- \ \
- 0:
- \x{a0}
- 0: \x{a0}
- \x{1680}
- 0: \x{1680}
- \x{2000}
- 0: \x{2000}
- \x{2001}
- 0: \x{2001}
- \= Expect no match
- \x{2028}
- No match
- \x{200d}
- No match
- # These are here because Perl has problems with the negative versions of the
- # properties and has changed how it behaves for caseless matching.
- /\p{^Lu}/i,utf
- 1234
- 0: 1
- \= Expect no match
- ABC
- No match
- /\P{Lu}/i,utf
- 1234
- 0: 1
- \= Expect no match
- ABC
- No match
- /\p{Ll}/i,utf
- a
- 0: a
- Az
- 0: z
- \= Expect no match
- ABC
- No match
- /\p{Lu}/i,utf
- A
- 0: A
- a\x{10a0}B
- 0: \x{10a0}
- \= Expect no match
- a
- No match
- \x{1d00}
- No match
- /\p{Lu}/i,utf
- A
- 0: A
- aZ
- 0: Z
- \= Expect no match
- abc
- No match
- /[\x{c0}\x{391}]/i,utf
- \x{c0}
- 0: \x{c0}
- \x{e0}
- 0: \x{e0}
- # The next two are special cases where the lengths of the different cases of
- # the same character differ. The first went wrong with heap frame storage; the
- # second was broken in all cases.
- /^\x{023a}+?(\x{0130}+)/i,utf
- \x{023a}\x{2c65}\x{0130}
- 0: \x{23a}\x{2c65}\x{130}
- 1: \x{130}
- /^\x{023a}+([^X])/i,utf
- \x{023a}\x{2c65}X
- 0: \x{23a}\x{2c65}
- 1: \x{2c65}
- /\x{c0}+\x{116}+/i,utf
- \x{c0}\x{e0}\x{116}\x{117}
- 0: \x{c0}\x{e0}\x{116}\x{117}
- /[\x{c0}\x{116}]+/i,utf
- \x{c0}\x{e0}\x{116}\x{117}
- 0: \x{c0}\x{e0}\x{116}\x{117}
- /(\x{de})\1/i,utf
- \x{de}\x{de}
- 0: \x{de}\x{de}
- 1: \x{de}
- \x{de}\x{fe}
- 0: \x{de}\x{fe}
- 1: \x{de}
- \x{fe}\x{fe}
- 0: \x{fe}\x{fe}
- 1: \x{fe}
- \x{fe}\x{de}
- 0: \x{fe}\x{de}
- 1: \x{fe}
- /^\x{c0}$/i,utf
- \x{c0}
- 0: \x{c0}
- \x{e0}
- 0: \x{e0}
- /^\x{e0}$/i,utf
- \x{c0}
- 0: \x{c0}
- \x{e0}
- 0: \x{e0}
- # The next two should be Perl-compatible, but it fails to match \x{e0}. PCRE
- # will match it only with UCP support, because without that it has no notion
- # of case for anything other than the ASCII letters.
- /((?i)[\x{c0}])/utf
- \x{c0}
- 0: \x{c0}
- 1: \x{c0}
- \x{e0}
- 0: \x{e0}
- 1: \x{e0}
- /(?i:[\x{c0}])/utf
- \x{c0}
- 0: \x{c0}
- \x{e0}
- 0: \x{e0}
- # These are PCRE's extra properties to help with Unicodizing \d etc.
- /^\p{Xan}/utf
- ABCD
- 0: A
- 1234
- 0: 1
- \x{6ca}
- 0: \x{6ca}
- \x{a6c}
- 0: \x{a6c}
- \x{10a7}
- 0: \x{10a7}
- \= Expect no match
- _ABC
- No match
- /^\p{Xan}+/utf
- ABCD1234\x{6ca}\x{a6c}\x{10a7}_
- 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
- \= Expect no match
- _ABC
- No match
- /^\p{Xan}+?/utf
- \x{6ca}\x{a6c}\x{10a7}_
- 0: \x{6ca}
- /^\p{Xan}*/utf
- ABCD1234\x{6ca}\x{a6c}\x{10a7}_
- 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
- /^\p{Xan}{2,9}/utf
- ABCD1234\x{6ca}\x{a6c}\x{10a7}_
- 0: ABCD1234\x{6ca}
- /^\p{Xan}{2,9}?/utf
- \x{6ca}\x{a6c}\x{10a7}_
- 0: \x{6ca}\x{a6c}
- /^[\p{Xan}]/utf
- ABCD1234_
- 0: A
- 1234abcd_
- 0: 1
- \x{6ca}
- 0: \x{6ca}
- \x{a6c}
- 0: \x{a6c}
- \x{10a7}
- 0: \x{10a7}
- \= Expect no match
- _ABC
- No match
- /^[\p{Xan}]+/utf
- ABCD1234\x{6ca}\x{a6c}\x{10a7}_
- 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
- \= Expect no match
- _ABC
- No match
- /^>\p{Xsp}/utf
- >\x{1680}\x{2028}\x{0b}
- 0: >\x{1680}
- >\x{a0}
- 0: >\x{a0}
- \= Expect no match
- \x{0b}
- No match
- /^>\p{Xsp}+/utf
- > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- /^>\p{Xsp}+?/utf
- >\x{1680}\x{2028}\x{0b}
- 0: >\x{1680}
- /^>\p{Xsp}*/utf
- > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- /^>\p{Xsp}{2,9}/utf
- > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- /^>\p{Xsp}{2,9}?/utf
- > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- 0: > \x{09}
- /^>[\p{Xsp}]/utf
- >\x{2028}\x{0b}
- 0: >\x{2028}
- /^>[\p{Xsp}]+/utf
- > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- /^>\p{Xps}/utf
- >\x{1680}\x{2028}\x{0b}
- 0: >\x{1680}
- >\x{a0}
- 0: >\x{a0}
- \= Expect no match
- \x{0b}
- No match
- /^>\p{Xps}+/utf
- > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- /^>\p{Xps}+?/utf
- >\x{1680}\x{2028}\x{0b}
- 0: >\x{1680}
- /^>\p{Xps}*/utf
- > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- /^>\p{Xps}{2,9}/utf
- > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- /^>\p{Xps}{2,9}?/utf
- > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- 0: > \x{09}
- /^>[\p{Xps}]/utf
- >\x{2028}\x{0b}
- 0: >\x{2028}
- /^>[\p{Xps}]+/utf
- > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
- /^\p{Xwd}/utf
- ABCD
- 0: A
- 1234
- 0: 1
- \x{6ca}
- 0: \x{6ca}
- \x{a6c}
- 0: \x{a6c}
- \x{10a7}
- 0: \x{10a7}
- _ABC
- 0: _
- \= Expect no match
- []
- No match
- /^\p{Xwd}+/utf
- ABCD1234\x{6ca}\x{a6c}\x{10a7}_
- 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
- /^\p{Xwd}+?/utf
- \x{6ca}\x{a6c}\x{10a7}_
- 0: \x{6ca}
- /^\p{Xwd}*/utf
- ABCD1234\x{6ca}\x{a6c}\x{10a7}_
- 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
- /^\p{Xwd}{2,9}/utf
- A_B12\x{6ca}\x{a6c}\x{10a7}
- 0: A_B12\x{6ca}\x{a6c}\x{10a7}
- /^\p{Xwd}{2,9}?/utf
- \x{6ca}\x{a6c}\x{10a7}_
- 0: \x{6ca}\x{a6c}
- /^[\p{Xwd}]/utf
- ABCD1234_
- 0: A
- 1234abcd_
- 0: 1
- \x{6ca}
- 0: \x{6ca}
- \x{a6c}
- 0: \x{a6c}
- \x{10a7}
- 0: \x{10a7}
- _ABC
- 0: _
- \= Expect no match
- []
- No match
- /^[\p{Xwd}]+/utf
- ABCD1234\x{6ca}\x{a6c}\x{10a7}_
- 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
- # A check not in UTF-8 mode
- /^[\p{Xwd}]+/
- ABCD1234_
- 0: ABCD1234_
- # Some negative checks
- /^[\P{Xwd}]+/utf
- !.+\x{019}\x{482}AB
- 0: !.+\x{19}\x{482}
- /^[\p{^Xwd}]+/utf
- !.+\x{019}\x{589}AB
- 0: !.+\x{19}\x{589}
- /[\D]/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- [\P{Nd}]
- Ket
- End
- ------------------------------------------------------------------
- 1\x{3c8}2
- 0: \x{3c8}
- /[\d]/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- [\p{Nd}]
- Ket
- End
- ------------------------------------------------------------------
- >\x{6f4}<
- 0: \x{6f4}
- /[\S]/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- [\P{Xsp}]
- Ket
- End
- ------------------------------------------------------------------
- \x{1680}\x{6f4}\x{1680}
- 0: \x{6f4}
- /[\s]/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- [\p{Xsp}]
- Ket
- End
- ------------------------------------------------------------------
- >\x{1680}<
- 0: \x{1680}
- /[\W]/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- [\P{Xwd}]
- Ket
- End
- ------------------------------------------------------------------
- A\x{1735}B
- 0: \x{1735}
- /[\w]/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- [\p{Xwd}]
- Ket
- End
- ------------------------------------------------------------------
- >\x{1723}<
- 0: \x{1723}
- /\D/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- notprop Nd
- Ket
- End
- ------------------------------------------------------------------
- 1\x{3c8}2
- 0: \x{3c8}
- /\d/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- prop Nd
- Ket
- End
- ------------------------------------------------------------------
- >\x{6f4}<
- 0: \x{6f4}
- /\S/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- notprop Xsp
- Ket
- End
- ------------------------------------------------------------------
- \x{1680}\x{6f4}\x{1680}
- 0: \x{6f4}
- /\s/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- prop Xsp
- Ket
- End
- ------------------------------------------------------------------
- >\x{1680}>
- 0: \x{1680}
- /\W/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- notprop Xwd
- Ket
- End
- ------------------------------------------------------------------
- A\x{1735}B
- 0: \x{1735}
- /\w/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- prop Xwd
- Ket
- End
- ------------------------------------------------------------------
- >\x{1723}<
- 0: \x{1723}
- /[[:alpha:]]/B,ucp
- ------------------------------------------------------------------
- Bra
- [\p{L}]
- Ket
- End
- ------------------------------------------------------------------
- /[[:lower:]]/B,ucp
- ------------------------------------------------------------------
- Bra
- [\p{Ll}]
- Ket
- End
- ------------------------------------------------------------------
- /[[:upper:]]/B,ucp
- ------------------------------------------------------------------
- Bra
- [\p{Lu}]
- Ket
- End
- ------------------------------------------------------------------
- /[[:alnum:]]/B,ucp
- ------------------------------------------------------------------
- Bra
- [\p{Xan}]
- Ket
- End
- ------------------------------------------------------------------
- /[[:ascii:]]/B,ucp
- ------------------------------------------------------------------
- Bra
- [\x00-\x7f]
- Ket
- End
- ------------------------------------------------------------------
- /[[:cntrl:]]/B,ucp
- ------------------------------------------------------------------
- Bra
- [\p{Cc}]
- Ket
- End
- ------------------------------------------------------------------
- /[[:digit:]]/B,ucp
- ------------------------------------------------------------------
- Bra
- [\p{Nd}]
- Ket
- End
- ------------------------------------------------------------------
- /[[:digit:]]/B,ucp,ascii_digit
- ------------------------------------------------------------------
- Bra
- [0-9]
- Ket
- End
- ------------------------------------------------------------------
- /[[:graph:]]/B,ucp
- ------------------------------------------------------------------
- Bra
- [[:graph:]]
- Ket
- End
- ------------------------------------------------------------------
- /[[:print:]]/B,ucp
- ------------------------------------------------------------------
- Bra
- [[:print:]]
- Ket
- End
- ------------------------------------------------------------------
- /[[:punct:]]/B,ucp
- ------------------------------------------------------------------
- Bra
- [[:punct:]]
- Ket
- End
- ------------------------------------------------------------------
- /[[:space:]]/B,ucp
- ------------------------------------------------------------------
- Bra
- [\p{Xps}]
- Ket
- End
- ------------------------------------------------------------------
- /[[:word:]]/B,ucp
- ------------------------------------------------------------------
- Bra
- [\p{Xwd}]
- Ket
- End
- ------------------------------------------------------------------
- /[[:xdigit:]]/B,ucp
- ------------------------------------------------------------------
- Bra
- [[:xdigit:]]
- Ket
- End
- ------------------------------------------------------------------
- /[[:xdigit:]]/B,ucp,ascii_digit
- ------------------------------------------------------------------
- Bra
- [0-9A-Fa-f]
- Ket
- End
- ------------------------------------------------------------------
- # Unicode properties for \b and \B
- /\b...\B/utf,ucp
- abc_
- 0: abc
- \x{37e}abc\x{376}
- 0: abc
- \x{37e}\x{376}\x{371}\x{393}\x{394}
- 0: \x{376}\x{371}\x{393}
- !\x{c0}++\x{c1}\x{c2}
- 0: ++\x{c1}
- !\x{c0}+++++
- 0: \x{c0}++
- # Without PCRE_UCP, non-ASCII always fail, even if < 256
- /\b...\B/utf
- abc_
- 0: abc
- \= Expect no match
- \x{37e}abc\x{376}
- No match
- \x{37e}\x{376}\x{371}\x{393}\x{394}
- No match
- !\x{c0}++\x{c1}\x{c2}
- No match
- !\x{c0}+++++
- No match
- # With PCRE_UCP, non-UTF8 chars that are < 256 still check properties
- /\b...\B/ucp
- abc_
- 0: abc
- !\x{c0}++\x{c1}\x{c2}
- 0: ++\xc1
- !\x{c0}+++++
- 0: \xc0++
- # Some of these are silly, but they check various combinations
- /[[:^alpha:][:^cntrl:]]+/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- [\P{L}\P{Cc}]++
- Ket
- End
- ------------------------------------------------------------------
- 123
- 0: 123
- abc
- 0: abc
- /[[:^cntrl:][:^alpha:]]+/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- [\P{Cc}\P{L}]++
- Ket
- End
- ------------------------------------------------------------------
- 123
- 0: 123
- abc
- 0: abc
- /[[:alpha:]]+/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- [\p{L}]++
- Ket
- End
- ------------------------------------------------------------------
- abc
- 0: abc
- /[[:^alpha:]\S]+/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- [\P{L}\P{Xsp}]++
- Ket
- End
- ------------------------------------------------------------------
- 123
- 0: 123
- abc
- 0: abc
- /[^\d]+/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- [^\p{Nd}]++
- Ket
- End
- ------------------------------------------------------------------
- abc123
- 0: abc
- abc\x{123}
- 0: abc\x{123}
- \x{660}abc
- 0: abc
- /\p{Lu}+9\p{Lu}+B\p{Lu}+b/B
- ------------------------------------------------------------------
- Bra
- prop Lu ++
- 9
- prop Lu +
- B
- prop Lu ++
- b
- Ket
- End
- ------------------------------------------------------------------
- /\p{^Lu}+9\p{^Lu}+B\p{^Lu}+b/B
- ------------------------------------------------------------------
- Bra
- notprop Lu +
- 9
- notprop Lu ++
- B
- notprop Lu +
- b
- Ket
- End
- ------------------------------------------------------------------
- /\P{Lu}+9\P{Lu}+B\P{Lu}+b/B
- ------------------------------------------------------------------
- Bra
- notprop Lu +
- 9
- notprop Lu ++
- B
- notprop Lu +
- b
- Ket
- End
- ------------------------------------------------------------------
- /\p{Han}+X\p{Greek}+\x{370}/B,utf
- ------------------------------------------------------------------
- Bra
- prop Han ++
- X
- prop Greek +
- \x{370}
- Ket
- End
- ------------------------------------------------------------------
- /\p{Xan}+!\p{Xan}+A/B
- ------------------------------------------------------------------
- Bra
- prop Xan ++
- !
- prop Xan +
- A
- Ket
- End
- ------------------------------------------------------------------
- /\p{Xsp}+!\p{Xsp}\t/B
- ------------------------------------------------------------------
- Bra
- prop Xsp ++
- !
- prop Xsp
- \x09
- Ket
- End
- ------------------------------------------------------------------
- /\p{Xps}+!\p{Xps}\t/B
- ------------------------------------------------------------------
- Bra
- prop Xps ++
- !
- prop Xps
- \x09
- Ket
- End
- ------------------------------------------------------------------
- /\p{Xwd}+!\p{Xwd}_/B
- ------------------------------------------------------------------
- Bra
- prop Xwd ++
- !
- prop Xwd
- _
- Ket
- End
- ------------------------------------------------------------------
- /A+\p{N}A+\dB+\p{N}*B+\d*/B,ucp
- ------------------------------------------------------------------
- Bra
- A++
- prop N
- A++
- prop Nd
- B+
- prop N *+
- B++
- prop Nd *+
- Ket
- End
- ------------------------------------------------------------------
- # These behaved oddly in Perl, so they are kept in this test
- /(\x{23a}\x{23a}\x{23a})?\1/i,utf
- \= Expect no match
- \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
- No match
- /(ȺȺȺ)?\1/i,utf
- \= Expect no match
- ȺȺȺⱥⱥ
- No match
- /(\x{23a}\x{23a}\x{23a})?\1/i,utf
- \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
- 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
- 1: \x{23a}\x{23a}\x{23a}
- /(ȺȺȺ)?\1/i,utf
- ȺȺȺⱥⱥⱥ
- 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
- 1: \x{23a}\x{23a}\x{23a}
- /(\x{23a}\x{23a}\x{23a})\1/i,utf
- \= Expect no match
- \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
- No match
- /(ȺȺȺ)\1/i,utf
- \= Expect no match
- ȺȺȺⱥⱥ
- No match
- /(\x{23a}\x{23a}\x{23a})\1/i,utf
- \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
- 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
- 1: \x{23a}\x{23a}\x{23a}
- /(ȺȺȺ)\1/i,utf
- ȺȺȺⱥⱥⱥ
- 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
- 1: \x{23a}\x{23a}\x{23a}
- /(\x{2c65}\x{2c65})\1/i,utf
- \x{2c65}\x{2c65}\x{23a}\x{23a}
- 0: \x{2c65}\x{2c65}\x{23a}\x{23a}
- 1: \x{2c65}\x{2c65}
- /(ⱥⱥ)\1/i,utf
- ⱥⱥȺȺ
- 0: \x{2c65}\x{2c65}\x{23a}\x{23a}
- 1: \x{2c65}\x{2c65}
- /(\x{23a}\x{23a}\x{23a})\1Y/i,utf
- X\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}YZ
- 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}Y
- 1: \x{23a}\x{23a}\x{23a}
- /(\x{2c65}\x{2c65})\1Y/i,utf
- X\x{2c65}\x{2c65}\x{23a}\x{23a}YZ
- 0: \x{2c65}\x{2c65}\x{23a}\x{23a}Y
- 1: \x{2c65}\x{2c65}
- # These scripts weren't yet in Perl when I added Unicode 6.0.0 to PCRE
- /^[\p{Batak}]/utf
- \x{1bc0}
- 0: \x{1bc0}
- \x{1bff}
- 0: \x{1bff}
- \= Expect no match
- \x{1bf4}
- No match
- /^[\p{Brahmi}]/utf
- \x{11000}
- 0: \x{11000}
- \x{1106f}
- 0: \x{1106f}
- \= Expect no match
- \x{1104e}
- No match
- /^[\p{Mandaic}]/utf
- \x{840}
- 0: \x{840}
- \x{85e}
- 0: \x{85e}
- \= Expect no match
- \x{85c}
- No match
- \x{85d}
- No match
- /(\X*)(.)/s,utf
- A\x{300}
- 0: A
- 1:
- 2: A
- /^S(\X*)e(\X*)$/utf
- Ste�re�o
- 0: Ste\x{301}re\x{301}o
- 1: te\x{301}r
- 2: \x{301}o
- /^\X/utf
- �re�o
- 0: \x{301}
- /^a\X41z/alt_bsux,allow_empty_class,match_unset_backref,dupnames
- aX41z
- 0: aX41z
- \= Expect no match
- aAz
- No match
- /\X/
- a\=ps
- 0: a
- a\=ph
- Partial match: a
- /\Xa/
- aa\=ps
- 0: aa
- aa\=ph
- 0: aa
- /\X{2}/
- aa\=ps
- 0: aa
- aa\=ph
- Partial match: aa
- /\X+a/
- a\=ps
- Partial match: a
- aa\=ps
- 0: aa
- aa\=ph
- Partial match: aa
- /\X+?a/
- a\=ps
- Partial match: a
- ab\=ps
- Partial match: ab
- aa\=ps
- 0: aa
- aa\=ph
- 0: aa
- aba\=ps
- 0: aba
- # These Unicode 6.1.0 scripts are not known to Perl.
- /\p{Chakma}\d/utf,ucp
- \x{11100}\x{1113c}
- 0: \x{11100}\x{1113c}
- /\p{Takri}\d/utf,ucp
- \x{11680}\x{116c0}
- 0: \x{11680}\x{116c0}
- /^\X/utf
- A\=ps
- 0: A
- A\=ph
- Partial match: A
- A\x{300}\x{301}\=ps
- 0: A\x{300}\x{301}
- A\x{300}\x{301}\=ph
- Partial match: A\x{300}\x{301}
- A\x{301}\=ps
- 0: A\x{301}
- A\x{301}\=ph
- Partial match: A\x{301}
- /^\X{2,3}/utf
- A\=ps
- Partial match: A
- A\=ph
- Partial match: A
- AA\=ps
- 0: AA
- AA\=ph
- Partial match: AA
- A\x{300}\x{301}\=ps
- Partial match: A\x{300}\x{301}
- A\x{300}\x{301}\=ph
- Partial match: A\x{300}\x{301}
- A\x{300}\x{301}A\x{300}\x{301}\=ps
- 0: A\x{300}\x{301}A\x{300}\x{301}
- A\x{300}\x{301}A\x{300}\x{301}\=ph
- Partial match: A\x{300}\x{301}A\x{300}\x{301}
- /^\X{2}/utf
- AA\=ps
- 0: AA
- AA\=ph
- Partial match: AA
- A\x{300}\x{301}A\x{300}\x{301}\=ps
- 0: A\x{300}\x{301}A\x{300}\x{301}
- A\x{300}\x{301}A\x{300}\x{301}\=ph
- Partial match: A\x{300}\x{301}A\x{300}\x{301}
- /^\X+/utf
- AA\=ps
- 0: AA
- AA\=ph
- Partial match: AA
- /^\X+?Z/utf
- AA\=ps
- Partial match: AA
- AA\=ph
- Partial match: AA
- /A\x{3a3}B/IBi,utf
- ------------------------------------------------------------------
- Bra
- /i A
- clist 03a3 03c2 03c3
- /i B
- Ket
- End
- ------------------------------------------------------------------
- Capture group count = 0
- Options: caseless utf
- First code unit = 'A' (caseless)
- Last code unit = 'B' (caseless)
- Subject length lower bound = 3
- /[\x{3a3}]/Bi,utf
- ------------------------------------------------------------------
- Bra
- clist 03a3 03c2 03c3
- Ket
- End
- ------------------------------------------------------------------
- /[^\x{3a3}]/Bi,utf
- ------------------------------------------------------------------
- Bra
- not clist 03a3 03c2 03c3
- Ket
- End
- ------------------------------------------------------------------
- /[\x{3a3}]+/Bi,utf
- ------------------------------------------------------------------
- Bra
- clist 03a3 03c2 03c3 ++
- Ket
- End
- ------------------------------------------------------------------
- /[^\x{3a3}]+/Bi,utf
- ------------------------------------------------------------------
- Bra
- not clist 03a3 03c2 03c3 ++
- Ket
- End
- ------------------------------------------------------------------
- /a*\x{3a3}/Bi,utf
- ------------------------------------------------------------------
- Bra
- /i a*+
- clist 03a3 03c2 03c3
- Ket
- End
- ------------------------------------------------------------------
- /\x{3a3}+a/Bi,utf
- ------------------------------------------------------------------
- Bra
- clist 03a3 03c2 03c3 ++
- /i a
- Ket
- End
- ------------------------------------------------------------------
- /\x{3a3}*\x{3c2}/Bi,utf
- ------------------------------------------------------------------
- Bra
- clist 03a3 03c2 03c3 *
- clist 03a3 03c2 03c3
- Ket
- End
- ------------------------------------------------------------------
- /\x{3a3}{3}/i,utf,aftertext
- \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
- 0: \x{3a3}\x{3c3}\x{3c2}
- 0+ \x{3a3}\x{3c3}\x{3c2}
- /\x{3a3}{2,4}/i,utf,aftertext
- \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
- 0: \x{3a3}\x{3c3}\x{3c2}\x{3a3}
- 0+ \x{3c3}\x{3c2}
- /\x{3a3}{2,4}?/i,utf,aftertext
- \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
- 0: \x{3a3}\x{3c3}
- 0+ \x{3c2}\x{3a3}\x{3c3}\x{3c2}
- /\x{3a3}+./i,utf,aftertext
- \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
- 0: \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
- 0+
- /\x{3a3}++./i,utf,aftertext
- \= Expect no match
- \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
- No match
- /\x{3a3}*\x{3c2}/Bi,utf
- ------------------------------------------------------------------
- Bra
- clist 03a3 03c2 03c3 *
- clist 03a3 03c2 03c3
- Ket
- End
- ------------------------------------------------------------------
- /[^\x{3a3}]*\x{3c2}/Bi,utf
- ------------------------------------------------------------------
- Bra
- not clist 03a3 03c2 03c3 *+
- clist 03a3 03c2 03c3
- Ket
- End
- ------------------------------------------------------------------
- /[^a]*\x{3c2}/Bi,utf
- ------------------------------------------------------------------
- Bra
- /i [^a]*
- clist 03a3 03c2 03c3
- Ket
- End
- ------------------------------------------------------------------
- /ist/Bi,utf
- ------------------------------------------------------------------
- Bra
- /i i
- clist 0053 0073 017f
- /i t
- Ket
- End
- ------------------------------------------------------------------
- \= Expect no match
- ikt
- No match
- /is+t/i,utf
- iSs\x{17f}t
- 0: iSs\x{17f}t
- \= Expect no match
- ikt
- No match
- /is+?t/i,utf
- \= Expect no match
- ikt
- No match
- /is?t/i,utf
- \= Expect no match
- ikt
- No match
- /is{2}t/i,utf
- \= Expect no match
- iskt
- No match
- # This property is a PCRE special
- /^\p{Xuc}/utf
- $abc
- 0: $
- @abc
- 0: @
- `abc
- 0: `
- \x{1234}abc
- 0: \x{1234}
- \= Expect no match
- abc
- No match
- /^\p{Xuc}+/utf
- $@`\x{a0}\x{1234}\x{e000}**
- 0: $@`\x{a0}\x{1234}\x{e000}
- \= Expect no match
- \x{9f}
- No match
- /^\p{Xuc}+?/utf
- $@`\x{a0}\x{1234}\x{e000}**
- 0: $
- \= Expect no match
- \x{9f}
- No match
- /^\p{Xuc}+?\*/utf
- $@`\x{a0}\x{1234}\x{e000}**
- 0: $@`\x{a0}\x{1234}\x{e000}*
- \= Expect no match
- \x{9f}
- No match
- /^\p{Xuc}++/utf
- $@`\x{a0}\x{1234}\x{e000}**
- 0: $@`\x{a0}\x{1234}\x{e000}
- \= Expect no match
- \x{9f}
- No match
- /^\p{Xuc}{3,5}/utf
- $@`\x{a0}\x{1234}\x{e000}**
- 0: $@`\x{a0}\x{1234}
- \= Expect no match
- \x{9f}
- No match
- /^\p{Xuc}{3,5}?/utf
- $@`\x{a0}\x{1234}\x{e000}**
- 0: $@`
- \= Expect no match
- \x{9f}
- No match
- /^[\p{Xuc}]/utf
- $@`\x{a0}\x{1234}\x{e000}**
- 0: $
- \= Expect no match
- \x{9f}
- No match
- /^[\p{Xuc}]+/utf
- $@`\x{a0}\x{1234}\x{e000}**
- 0: $@`\x{a0}\x{1234}\x{e000}
- \= Expect no match
- \x{9f}
- No match
- /^\P{Xuc}/utf
- abc
- 0: a
- \= Expect no match
- $abc
- No match
- @abc
- No match
- `abc
- No match
- \x{1234}abc
- No match
- /^[\P{Xuc}]/utf
- abc
- 0: a
- \= Expect no match
- $abc
- No match
- @abc
- No match
- `abc
- No match
- \x{1234}abc
- No match
- # Some auto-possessification tests
- /\pN+\z/B
- ------------------------------------------------------------------
- Bra
- prop N ++
- \z
- Ket
- End
- ------------------------------------------------------------------
- /\PN+\z/B
- ------------------------------------------------------------------
- Bra
- notprop N ++
- \z
- Ket
- End
- ------------------------------------------------------------------
- /\pN+/B
- ------------------------------------------------------------------
- Bra
- prop N ++
- Ket
- End
- ------------------------------------------------------------------
- /\PN+/B
- ------------------------------------------------------------------
- Bra
- notprop N ++
- Ket
- End
- ------------------------------------------------------------------
- /\p{Any}+\p{Any} \p{Any}+\P{Any} \p{Any}+\p{L&} \p{Any}+\p{L} \p{Any}+\p{Lu} \p{Any}+\p{Han} \p{Any}+\p{Xan} \p{Any}+\p{Xsp} \p{Any}+\p{Xps} \p{Xwd}+\p{Any} \p{Any}+\p{Xuc}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- AllAny+
- AllAny
- AllAny+
- notprop Any
- AllAny+
- prop Lc
- AllAny+
- prop L
- AllAny+
- prop Lu
- AllAny+
- prop Han
- AllAny+
- prop Xan
- AllAny+
- prop Xsp
- AllAny+
- prop Xps
- prop Xwd +
- AllAny
- AllAny+
- prop Xuc
- Ket
- End
- ------------------------------------------------------------------
- /\p{L&}+\p{Any} \p{L&}+\p{L&} \P{L&}+\p{L&} \p{L&}+\p{L} \p{L&}+\p{Lu} \p{L&}+\p{Han} \p{L&}+\p{Xan} \p{L&}+\P{Xan} \p{L&}+\p{Xsp} \p{L&}+\p{Xps} \p{Xwd}+\p{L&} \p{L&}+\p{Xuc}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Lc +
- AllAny
- prop Lc +
- prop Lc
- notprop Lc ++
- prop Lc
- prop Lc +
- prop L
- prop Lc +
- prop Lu
- prop Lc +
- prop Han
- prop Lc +
- prop Xan
- prop Lc ++
- notprop Xan
- prop Lc ++
- prop Xsp
- prop Lc ++
- prop Xps
- prop Xwd +
- prop Lc
- prop Lc +
- prop Xuc
- Ket
- End
- ------------------------------------------------------------------
- /\p{N}+\p{Any} \p{N}+\p{L&} \p{N}+\p{L} \p{N}+\P{L} \p{N}+\P{N} \p{N}+\p{Lu} \p{N}+\p{Han} \p{N}+\p{Xan} \p{N}+\p{Xsp} \p{N}+\p{Xps} \p{Xwd}+\p{N} \p{N}+\p{Xuc}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop N +
- AllAny
- prop N +
- prop Lc
- prop N ++
- prop L
- prop N +
- notprop L
- prop N ++
- notprop N
- prop N ++
- prop Lu
- prop N +
- prop Han
- prop N +
- prop Xan
- prop N ++
- prop Xsp
- prop N ++
- prop Xps
- prop Xwd +
- prop N
- prop N +
- prop Xuc
- Ket
- End
- ------------------------------------------------------------------
- /\p{Lu}+\p{Any} \p{Lu}+\p{L&} \p{Lu}+\p{L} \p{Lu}+\p{Lu} \P{Lu}+\p{Lu} \p{Lu}+\p{Nd} \p{Lu}+\P{Nd} \p{Lu}+\p{Han} \p{Lu}+\p{Xan} \p{Lu}+\p{Xsp} \p{Lu}+\p{Xps} \p{Xwd}+\p{Lu} \p{Lu}+\p{Xuc}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Lu +
- AllAny
- prop Lu +
- prop Lc
- prop Lu +
- prop L
- prop Lu +
- prop Lu
- notprop Lu ++
- prop Lu
- prop Lu ++
- prop Nd
- prop Lu +
- notprop Nd
- prop Lu +
- prop Han
- prop Lu +
- prop Xan
- prop Lu ++
- prop Xsp
- prop Lu ++
- prop Xps
- prop Xwd +
- prop Lu
- prop Lu +
- prop Xuc
- Ket
- End
- ------------------------------------------------------------------
- /\p{Han}+\p{Lu} \p{Han}+\p{L&} \p{Han}+\p{L} \p{Han}+\p{Lu} \p{Han}+\p{Arabic} \p{Arabic}+\p{Arabic} \p{Han}+\p{Xan} \p{Han}+\p{Xsp} \p{Han}+\p{Xps} \p{Xwd}+\p{Han} \p{Han}+\p{Xuc}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Han +
- prop Lu
- prop Han +
- prop Lc
- prop Han +
- prop L
- prop Han +
- prop Lu
- prop Han ++
- prop Arabic
- prop Arabic +
- prop Arabic
- prop Han +
- prop Xan
- prop Han +
- prop Xsp
- prop Han +
- prop Xps
- prop Xwd +
- prop Han
- prop Han +
- prop Xuc
- Ket
- End
- ------------------------------------------------------------------
- /\p{Xan}+\p{Any} \p{Xan}+\p{L&} \P{Xan}+\p{L&} \p{Xan}+\p{L} \p{Xan}+\p{Lu} \p{Xan}+\p{Han} \p{Xan}+\p{Xan} \p{Xan}+\P{Xan} \p{Xan}+\p{Xsp} \p{Xan}+\p{Xps} \p{Xwd}+\p{Xan} \p{Xan}+\p{Xuc}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Xan +
- AllAny
- prop Xan +
- prop Lc
- notprop Xan ++
- prop Lc
- prop Xan +
- prop L
- prop Xan +
- prop Lu
- prop Xan +
- prop Han
- prop Xan +
- prop Xan
- prop Xan ++
- notprop Xan
- prop Xan ++
- prop Xsp
- prop Xan ++
- prop Xps
- prop Xwd +
- prop Xan
- prop Xan +
- prop Xuc
- Ket
- End
- ------------------------------------------------------------------
- /\p{Xsp}+\p{Any} \p{Xsp}+\p{L&} \p{Xsp}+\p{L} \p{Xsp}+\p{Lu} \p{Xsp}+\p{Han} \p{Xsp}+\p{Xan} \p{Xsp}+\p{Xsp} \P{Xsp}+\p{Xsp} \p{Xsp}+\p{Xps} \p{Xwd}+\p{Xsp} \p{Xsp}+\p{Xuc}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Xsp +
- AllAny
- prop Xsp ++
- prop Lc
- prop Xsp ++
- prop L
- prop Xsp ++
- prop Lu
- prop Xsp +
- prop Han
- prop Xsp ++
- prop Xan
- prop Xsp +
- prop Xsp
- notprop Xsp ++
- prop Xsp
- prop Xsp +
- prop Xps
- prop Xwd ++
- prop Xsp
- prop Xsp +
- prop Xuc
- Ket
- End
- ------------------------------------------------------------------
- /\p{Xwd}+\p{Any} \p{Xwd}+\p{L&} \p{Xwd}+\p{L} \p{Xwd}+\p{Lu} \p{Xwd}+\p{Han} \p{Xwd}+\p{Xan} \p{Xwd}+\p{Xsp} \p{Xwd}+\p{Xps} \p{Xwd}+\p{Xwd} \p{Xwd}+\P{Xwd} \p{Xwd}+\p{Xuc}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Xwd +
- AllAny
- prop Xwd +
- prop Lc
- prop Xwd +
- prop L
- prop Xwd +
- prop Lu
- prop Xwd +
- prop Han
- prop Xwd +
- prop Xan
- prop Xwd ++
- prop Xsp
- prop Xwd ++
- prop Xps
- prop Xwd +
- prop Xwd
- prop Xwd ++
- notprop Xwd
- prop Xwd +
- prop Xuc
- Ket
- End
- ------------------------------------------------------------------
- /\p{Xuc}+\p{Any} \p{Xuc}+\p{L&} \p{Xuc}+\p{L} \p{Xuc}+\p{Lu} \p{Xuc}+\p{Han} \p{Xuc}+\p{Xan} \p{Xuc}+\p{Xsp} \p{Xuc}+\p{Xps} \p{Xwd}+\p{Xuc} \p{Xuc}+\p{Xuc} \p{Xuc}+\P{Xuc}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Xuc +
- AllAny
- prop Xuc +
- prop Lc
- prop Xuc +
- prop L
- prop Xuc +
- prop Lu
- prop Xuc +
- prop Han
- prop Xuc +
- prop Xan
- prop Xuc +
- prop Xsp
- prop Xuc +
- prop Xps
- prop Xwd +
- prop Xuc
- prop Xuc +
- prop Xuc
- prop Xuc ++
- notprop Xuc
- Ket
- End
- ------------------------------------------------------------------
- /\p{N}+\p{Ll} \p{N}+\p{Nd} \p{N}+\P{Nd}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop N ++
- prop Ll
- prop N +
- prop Nd
- prop N +
- notprop Nd
- Ket
- End
- ------------------------------------------------------------------
- /\p{Xan}+\p{L} \p{Xan}+\p{N} \p{Xan}+\p{C} \p{Xan}+\P{L} \P{Xan}+\p{N} \p{Xan}+\P{C}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Xan +
- prop L
- prop Xan +
- prop N
- prop Xan ++
- prop C
- prop Xan +
- notprop L
- notprop Xan ++
- prop N
- prop Xan +
- notprop C
- Ket
- End
- ------------------------------------------------------------------
- /\p{L}+\p{Xan} \p{N}+\p{Xan} \p{C}+\p{Xan} \P{L}+\p{Xan} \p{N}+\p{Xan} \P{C}+\p{Xan} \p{L}+\P{Xan}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop L +
- prop Xan
- prop N +
- prop Xan
- prop C ++
- prop Xan
- notprop L +
- prop Xan
- prop N +
- prop Xan
- notprop C +
- prop Xan
- prop L ++
- notprop Xan
- Ket
- End
- ------------------------------------------------------------------
- /\p{Xan}+\p{Lu} \p{Xan}+\p{Nd} \p{Xan}+\p{Cc} \p{Xan}+\P{Ll} \P{Xan}+\p{No} \p{Xan}+\P{Cf}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Xan +
- prop Lu
- prop Xan +
- prop Nd
- prop Xan ++
- prop Cc
- prop Xan +
- notprop Ll
- notprop Xan ++
- prop No
- prop Xan +
- notprop Cf
- Ket
- End
- ------------------------------------------------------------------
- /\p{Lu}+\p{Xan} \p{Nd}+\p{Xan} \p{Cs}+\p{Xan} \P{Lt}+\p{Xan} \p{Nl}+\p{Xan} \P{Cc}+\p{Xan} \p{Lt}+\P{Xan}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Lu +
- prop Xan
- prop Nd +
- prop Xan
- prop Cs ++
- prop Xan
- notprop Lt +
- prop Xan
- prop Nl +
- prop Xan
- notprop Cc +
- prop Xan
- prop Lt ++
- notprop Xan
- Ket
- End
- ------------------------------------------------------------------
- /\w+\p{P} \w+\p{Po} \w+\s \p{Xan}+\s \s+\p{Xan} \s+\w/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Xwd +
- prop P
- prop Xwd +
- prop Po
- prop Xwd ++
- prop Xsp
- prop Xan ++
- prop Xsp
- prop Xsp ++
- prop Xan
- prop Xsp ++
- prop Xwd
- Ket
- End
- ------------------------------------------------------------------
- /\w+\P{P} \W+\p{Po} \w+\S \P{Xan}+\s \s+\P{Xan} \s+\W/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Xwd +
- notprop P
- notprop Xwd +
- prop Po
- prop Xwd +
- notprop Xsp
- notprop Xan +
- prop Xsp
- prop Xsp +
- notprop Xan
- prop Xsp +
- notprop Xwd
- Ket
- End
- ------------------------------------------------------------------
- /\w+\p{Po} \w+\p{Pc} \W+\p{Po} \W+\p{Pc} \w+\P{Po} \w+\P{Pc}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Xwd +
- prop Po
- prop Xwd ++
- prop Pc
- notprop Xwd +
- prop Po
- notprop Xwd +
- prop Pc
- prop Xwd +
- notprop Po
- prop Xwd +
- notprop Pc
- Ket
- End
- ------------------------------------------------------------------
- /\p{Nl}+\p{Xan} \P{Nl}+\p{Xan} \p{Nl}+\P{Xan} \P{Nl}+\P{Xan}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Nl +
- prop Xan
- notprop Nl +
- prop Xan
- prop Nl ++
- notprop Xan
- notprop Nl +
- notprop Xan
- Ket
- End
- ------------------------------------------------------------------
- /\p{Xan}+\p{Nl} \P{Xan}+\p{Nl} \p{Xan}+\P{Nl} \P{Xan}+\P{Nl}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Xan +
- prop Nl
- notprop Xan ++
- prop Nl
- prop Xan +
- notprop Nl
- notprop Xan +
- notprop Nl
- Ket
- End
- ------------------------------------------------------------------
- /\p{Xan}+\p{Nd} \P{Xan}+\p{Nd} \p{Xan}+\P{Nd} \P{Xan}+\P{Nd}/Bx,ucp
- ------------------------------------------------------------------
- Bra
- prop Xan +
- prop Nd
- notprop Xan ++
- prop Nd
- prop Xan +
- notprop Nd
- notprop Xan +
- notprop Nd
- Ket
- End
- ------------------------------------------------------------------
- # End auto-possessification tests
- /\w+/B,utf,ucp,auto_callout
- ------------------------------------------------------------------
- Bra
- Callout 255 0 3
- prop Xwd ++
- Callout 255 3 0
- Ket
- End
- ------------------------------------------------------------------
- abcd
- --->abcd
- +0 ^ \w+
- +3 ^ ^ End of pattern
- 0: abcd
- /[\p{N}]?+/B,no_auto_possess
- ------------------------------------------------------------------
- Bra
- [\p{N}]?+
- Ket
- End
- ------------------------------------------------------------------
- /[\p{L}ab]{2,3}+/B,no_auto_possess
- ------------------------------------------------------------------
- Bra
- [ab\p{L}]{2,3}+
- Ket
- End
- ------------------------------------------------------------------
- /\D+\X \d+\X \S+\X \s+\X \W+\X \w+\X \R+\X \H+\X \h+\X \V+\X \v+\X a+\X \n+\X .+\X/Bx
- ------------------------------------------------------------------
- Bra
- \D+
- extuni
- \d+
- extuni
- \S+
- extuni
- \s+
- extuni
- \W+
- extuni
- \w+
- extuni
- \R+
- extuni
- \H+
- extuni
- \h+
- extuni
- \V+
- extuni
- \v+
- extuni
- a+
- extuni
- \x0a+
- extuni
- Any+
- extuni
- Ket
- End
- ------------------------------------------------------------------
- /.+\X/Bsx
- ------------------------------------------------------------------
- Bra
- AllAny+
- extuni
- Ket
- End
- ------------------------------------------------------------------
- /\X+$/Bmx
- ------------------------------------------------------------------
- Bra
- extuni+
- /m $
- Ket
- End
- ------------------------------------------------------------------
- /\X+\D \X+\d \X+\S \X+\s \X+\W \X+\w \X+. \X+\R \X+\H \X+\h \X+\V \X+\v \X+\X \X+\Z \X+\z \X+$/Bx
- ------------------------------------------------------------------
- Bra
- extuni+
- \D
- extuni+
- \d
- extuni+
- \S
- extuni+
- \s
- extuni+
- \W
- extuni+
- \w
- extuni+
- Any
- extuni+
- \R
- extuni+
- \H
- extuni+
- \h
- extuni+
- \V
- extuni+
- \v
- extuni+
- extuni
- extuni+
- \Z
- extuni++
- \z
- extuni+
- $
- Ket
- End
- ------------------------------------------------------------------
- /\d+\s{0,5}=\s*\S?=\w{0,4}\W*/B,utf,ucp
- ------------------------------------------------------------------
- Bra
- prop Nd ++
- prop Xsp {0,5}+
- =
- prop Xsp *+
- notprop Xsp ?
- =
- prop Xwd {0,4}+
- notprop Xwd *+
- Ket
- End
- ------------------------------------------------------------------
- /[RST]+/Bi,utf,ucp
- ------------------------------------------------------------------
- Bra
- [R-Tr-t\x{17f}]++
- Ket
- End
- ------------------------------------------------------------------
- /[R-T]+/Bi,utf,ucp
- ------------------------------------------------------------------
- Bra
- [R-Tr-t\x{17f}]++
- Ket
- End
- ------------------------------------------------------------------
- /[Q-U]+/Bi,utf,ucp
- ------------------------------------------------------------------
- Bra
- [Q-Uq-u\x{17f}]++
- Ket
- End
- ------------------------------------------------------------------
- /^s?c/Iim,utf
- Capture group count = 0
- Options: caseless multiline utf
- First code unit at start or follows newline
- Last code unit = 'c' (caseless)
- Subject length lower bound = 1
- scat
- 0: sc
- /\X?abc/utf,no_start_optimize
- \xff\x7f\x00\x00\x03\x00\x41\xcc\x80\x41\x{300}\x61\x62\x63\x00\=no_utf_check,offset=06
- 0: A\x{300}abc
- /\x{100}\x{200}\K\x{300}/utf,startchar
- \x{100}\x{200}\x{300}
- 0: \x{100}\x{200}\x{300}
- ^^^^^^^^^^^^^^
- # Test UTF characters in a substitution
- /ábc/utf,replace=XሴZ
- 123ábc123
- 1: 123X\x{1234}Z123
- /(?<=abc)(|def)/g,utf,replace=<$0>
- 123abcáyzabcdef789abcሴqr
- 4: 123abc<>\x{e1}yzabc<><def>789abc<>\x{1234}qr
- /[A-`]/iB,utf
- ------------------------------------------------------------------
- Bra
- [A-z\x{212a}\x{17f}]
- Ket
- End
- ------------------------------------------------------------------
- abcdefghijklmno
- 0: a
- /(?<=\K\x{17f})/g,utf,aftertext,allow_lookaround_bsk
- \x{17f}\x{17f}\x{17f}\x{17f}\x{17f}
- 0: \x{17f}
- 0+ \x{17f}\x{17f}\x{17f}\x{17f}
- 0: \x{17f}
- 0+ \x{17f}\x{17f}\x{17f}
- 0: \x{17f}
- 0+ \x{17f}\x{17f}
- 0: \x{17f}
- 0+ \x{17f}
- 0: \x{17f}
- 0+
- /(?<=\K\x{17f})/altglobal,utf,aftertext,allow_lookaround_bsk
- \x{17f}\x{17f}\x{17f}\x{17f}\x{17f}
- 0: \x{17f}
- 0+ \x{17f}\x{17f}\x{17f}\x{17f}
- 0: \x{17f}
- 0+ \x{17f}\x{17f}\x{17f}
- 0: \x{17f}
- 0+ \x{17f}\x{17f}
- 0: \x{17f}
- 0+ \x{17f}
- 0: \x{17f}
- 0+
- "\xa\xf<(.\pZ*\P{Xwd}+^\xa8\3'3yq.::?(?J:()\xd1+!~:3'(8?:)':(?'d'(?'d'^u]!.+.+\\A\Ah(n+?9){7}+\K;(?'X'u'(?'c'(?'z'(?<y>\xb::\xf0'|\xd3(\xae?'w(z\x8?P>l)\x8?P>a)'\H\R\xd1+!!~:3'(?:h$N{26875}\W+?\\=D{2}\x89(?i:Uy0\N({2\xa(\v\x85*){y*\A(()\p{L}+?\P{^Xan}'+?\xff\+pS\?|).{;y*\A(()\p{L}+?\8}\d?1(|)(/1){7}.+[Lp{Me}].\s\xdcC*?(?(<y>))(?<!^)$C((;*?(R))+(\xbf(R))\x8a\X*?\x8a\xb\xd1^9\3*+(\xc1,\k'R'\xb4)\xcc(z\z(?J)(?'X'\x1b(\xb\xd1^9\?'3*+P{^Xan}+?\xff\+(\xc1.]k+\xb'Pm'\xb4)\xcc4f\xa7'\xd1V(?i:U,{2,2})'(?'X'))?-%--\x95$9*\4'|\xd1(\x9c''%\x94$9)#(?'R')3\x7?('P\xed7'\xa8\xb1^u\xeaw\1\0\0\(|(?1){7}.+[\p{Me}].\s\xdcC*^\x14?(?(<y>))(?<!^)$C((;*?(R*?))+(?(R)\x8a\X*?\x8a\xb\xd1^9\3*+|(\xc1,\k'R'\xb4)\xcc! z)\z(?JJ)(?'X';(\xb\xd1^9\?'3*+(\xc1.]k+\xb'Pm'\xb4))':(?'d')(?'RD'(d')|)|$)'|(?<x>\g{d});\g{x}\x11\g{d}\x81\|$((?'X'\'X'(?'W''\x92()'9'\x83*))\xba*\!?^ <){)':;\xcc4'\xd1'(?'X'28))?-%--\x95$9*\4'|\xd1((''e\x94*$9:)*#(?'R')3)\x7?('P\xed')\\x16:;()\x1e\x10*:(?<y>)\xd1+0!~:(?)'d'E:yD!\s(?'R'\x1e;\x10:U))|'\x9g!\xb0*){)\\x16:;()\x1e\x10\x87*:(?<y>)\xd1+!~:(?)'}'\d'E:yD!\s(?'R'\x1e;\x10:U))|'))|)g!\xb0*R+9{29+)#(?'P'})*?pS\{3,}\x85,{0,}l{*UTF)(\xe{7}){3722,{9,}d{2,?|))|{)\(A?&d}}{\xa,}2}){3,}7,l{)22}(,}l:7{2,4}}29\x19+)#?'P'})*v?))\x5"
- Failed: error 122 at offset 1227: unmatched closing parenthesis
- /$(&.+[\p{Me}].\s\xdcC*?(?(<y>))(?<!^)$C((;*?(R))+(?(R)){0,6}?|){12\x8a\X*?\x8a\x0b\xd1^9\3*+(\xc1,\k'P'\xb4)\xcc(z\z(?JJ)(?'X'8};(\x0b\xd1^9\?'3*+(\xc1.]k+\x0b'Pm'\xb4\xcc4'\xd1'(?'X'))?-%--\x95$9*\4'|\xd1(''%\x95*$9)#(?'R')3\x07?('P\xed')\\x16:;()\x1e\x10*:(?<y>)\xd1+!~:(?)''(d'E:yD!\s(?'R'\x1e;\x10:U))|')g!\xb0*){29+))#(?'P'})*?/
- "(*UTF)(*UCP)(.UTF).+X(\V+;\^(\D|)!999}(?(?C{7(?C')\H*\S*/^\x5\xa\\xd3\x85n?(;\D*(?m).[^mH+((*UCP)(*U:F)})(?!^)(?'"
- Failed: error 162 at offset 113: subpattern name expected
- /[\pS#moq]/
- =
- 0: =
- /(*:a\x{12345}b\t(d\)c)xxx/utf,alt_verbnames,mark
- cxxxz
- 0: xxx
- MK: a\x{12345}b\x{09}(d)c
- /abcd/utf,replace=x\x{824}y\o{3333}z(\Q12\$34$$\x34\E5$$),substitute_extended
- abcd
- 1: x\x{824}y\x{6db}z(12\$34$$\x345$)
- /a(\x{e0}\x{101})(\x{c0}\x{102})/utf,replace=a\u$1\U$1\E$1\l$2\L$2\Eab\U\x{e0}\x{101}\L\x{d0}\x{160}\EDone,substitute_extended
- a\x{e0}\x{101}\x{c0}\x{102}
- 1: a\x{c0}\x{101}\x{c0}\x{100}\x{e0}\x{101}\x{e0}\x{102}\x{e0}\x{103}ab\x{c0}\x{100}\x{f0}\x{161}Done
- /((?<digit>\d)|(?<letter>\p{L}))/g,substitute_extended,replace=<${digit:+digit; :not digit; }${letter:+letter:not a letter}>
- ab12cde
- 7: <not digit; letter><not digit; letter><digit; not a letter><digit; not a letter><not digit; letter><not digit; letter><not digit; letter>
- /(*UCP)(*UTF)[[:>:]]X/B
- ------------------------------------------------------------------
- Bra
- \b (ucp)
- Assert back
- Reverse
- prop Xwd
- Ket
- X
- Ket
- End
- ------------------------------------------------------------------
- /abc/utf,replace=xyz
- abc\=zero_terminate
- 1: xyz
- /a[[:punct:]b]/ucp,bincode
- ------------------------------------------------------------------
- Bra
- a
- [b[:punct:]]
- Ket
- End
- ------------------------------------------------------------------
- /a[[:punct:]b]/utf,ucp,bincode
- ------------------------------------------------------------------
- Bra
- a
- [b[:punct:]]
- Ket
- End
- ------------------------------------------------------------------
- /a[b[:punct:]]/utf,ucp,bincode
- ------------------------------------------------------------------
- Bra
- a
- [b[:punct:]]
- Ket
- End
- ------------------------------------------------------------------
- /[[:^ascii:]]/utf,ucp,bincode
- ------------------------------------------------------------------
- Bra
- [\x80-\xff] (neg)
- Ket
- End
- ------------------------------------------------------------------
- /[[:^ascii:]\w]/utf,ucp,bincode
- ------------------------------------------------------------------
- Bra
- [\x80-\xff\p{Xwd}\x{100}-\x{10ffff}]
- Ket
- End
- ------------------------------------------------------------------
- /[\w[:^ascii:]]/utf,ucp,bincode
- ------------------------------------------------------------------
- Bra
- [\x80-\xff\p{Xwd}\x{100}-\x{10ffff}]
- Ket
- End
- ------------------------------------------------------------------
- /[^[:ascii:]\W]/utf,ucp,bincode
- ------------------------------------------------------------------
- Bra
- [^\x00-\x7f\P{Xwd}]
- Ket
- End
- ------------------------------------------------------------------
- \x{de}
- 0: \x{de}
- \x{200}
- 0: \x{200}
- \= Expect no match
- \x{589}
- No match
- \x{37e}
- No match
- /[[:^ascii:]a]/utf,ucp,bincode
- ------------------------------------------------------------------
- Bra
- [a\x80-\xff] (neg)
- Ket
- End
- ------------------------------------------------------------------
- /L(?#(|++<!(2)?/B,utf,no_auto_possess,auto_callout
- ------------------------------------------------------------------
- Bra
- Callout 255 0 14
- L?
- Callout 255 14 0
- Ket
- End
- ------------------------------------------------------------------
- /L(?#(|++<!(2)?/B,utf,ucp,auto_callout
- ------------------------------------------------------------------
- Bra
- Callout 255 0 14
- L?+
- Callout 255 14 0
- Ket
- End
- ------------------------------------------------------------------
- /(*UTF)C\x09((?<!'(?x)!*H? #\xcc\x9a[^$]/
- Failed: error 114 at offset 39: missing closing parenthesis
- /[\D]/utf
- \x{1d7cf}
- 0: \x{1d7cf}
- /[\D\P{Nd}]/utf
- \x{1d7cf}
- 0: \x{1d7cf}
- /[^\D]/utf
- a9b
- 0: 9
- \= Expect no match
- \x{1d7cf}
- No match
- /[^\D\P{Nd}]/utf
- a9b
- 0: 9
- \x{1d7cf}
- 0: \x{1d7cf}
- \= Expect no match
- \x{10000}
- No match
- # Hex uses pattern length, not zero-terminated. This tests for overrunning
- # the given length of a pattern.
- /'(*UTF)'/hex
- /'#('/hex,extended,utf
- /a(?<=A\XB)/utf
- Failed: error 125 at offset 1: length of lookbehind assertion is not limited
- /../utf,auto_callout
- \n\x{123}\x{123}\x{123}\x{123}
- --->\x{0a}\x{123}\x{123}\x{123}\x{123}
- +0 ^ .
- +0 ^ .
- +1 ^ ^ .
- +2 ^ ^ End of pattern
- 0: \x{123}\x{123}
- # This tests processing wide characters in extended mode.
- /XÈ€/x,utf
- # These three test a bug fix that was not clearing up after a locale setting
- # when the test or a subsequent one matched a wide character.
- //locale=C
- /[\P{Yi}]/utf
- \x{2f000}
- 0: \x{2f000}
- /[\P{Yi}]/utf,locale=C
- \x{2f000}
- 0: \x{2f000}
- /^(?<!(?=􃡜))/B,utf
- ------------------------------------------------------------------
- Bra
- ^
- Assert back not
- Assert
- \x{10385c}
- Ket
- Ket
- Ket
- End
- ------------------------------------------------------------------
- # Horizontal and vertical space lists ignore caseless
- /[\HH]/Bi,utf
- ------------------------------------------------------------------
- Bra
- [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff\x{100}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{10ffff}]
- Ket
- End
- ------------------------------------------------------------------
- /[^\HH]/Bi,utf
- ------------------------------------------------------------------
- Bra
- [^\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff\x{100}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{10ffff}]
- Ket
- End
- ------------------------------------------------------------------
- //g,utf
- \=zero_terminate
- 0:
- /^(?1)\p{Nd}{3}(a)/
- a123a
- 0: a123a
- 1: a
- /\p{Nd}{0,3}[\pL](*:abc)(?C1)xxx/callout_info
- Callout 1 x
- # ---------------------------------------------------------------------------
- # A bunch of tests that hit lines of code that others do not (at least when
- # these were created).
- /^[^a]{3,}?x/i,utf,no_start_optimize,no_auto_possess
- \= Expect no match
- bbb
- No match
- cc
- No match
- /^[ac]{3,}?x/i,utf,no_start_optimize,no_auto_possess
- \= Expect no match
- aaa\x{100}
- No match
- /^X\X/no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X\p{L&}+?/no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X\p{L}+?/no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X\p{Lu}+?/no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X\p{Arabic}+?/no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X\p{Xan}+?/ucp,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X\s+?/ucp,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- XX
- No match
- /^X\S+?/ucp,no_start_optimize,no_auto_possess
- XX
- 0: XX
- \= Expect no match
- X
- No match
- /^X\w+?/ucp,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X[^\x{b5}]+?/i,utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X[\x{b5}]+?/i,utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X\p{Xuc}+?/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X.+?Z/s,utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X\R+?/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X\H+?/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X\V+?/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X\s+?/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- XX
- No match
- /^X\S+?/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- /^X\p{Any}{1,3}?Z/s,no_start_optimize,no_auto_possess
- XYYYZ
- 0: XYYYZ
- \= Expect no match
- XY
- No match
- XYY
- No match
- XYYY
- No match
- XYYYYZ
- No match
- /^X\p{L&}{1,3}?Z/s,no_start_optimize,no_auto_possess
- \= Expect no match
- XY
- No match
- XY!
- No match
- /^X\p{L}{1,3}?Z/s,no_start_optimize,no_auto_possess
- \= Expect no match
- XY
- No match
- XY!
- No match
- /^X\p{Lu}{1,3}?Z/s,no_start_optimize,no_auto_possess
- \= Expect no match
- XY
- No match
- XY!
- No match
- /^X\P{Han}{1,3}?Z/s,utf,no_start_optimize,no_auto_possess
- \= Expect no match
- XY
- No match
- XY!
- No match
- XY\x{2f00}!
- No match
- /^X\p{Xan}{1,3}?Z/s,no_start_optimize,no_auto_possess
- \= Expect no match
- XY
- No match
- XY!
- No match
- /^X\p{Xsp}{1,3}?Z/s,no_start_optimize,no_auto_possess
- \= Expect no match
- X\n
- No match
- X\n!
- No match
- X\n\n!
- No match
- /^X\P{Xsp}{1,3}?Z/s,no_start_optimize,no_auto_possess
- \= Expect no match
- XYY\n
- No match
- /^X\p{Xwd}{1,3}?Z/s,no_start_optimize,no_auto_possess
- \= Expect no match
- XY
- No match
- XY!
- No match
- XYY!
- No match
- /^X\x{b5}+?Z/i,utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- X\x{b5}
- No match
- X\x{b5}\x{b5}Y
- No match
- /^X\p{Xuc}+?Z/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- X$
- No match
- X@@Y
- No match
- /(*CRLF)^X.+?Z/utf,no_start_optimize,no_auto_possess
- \= Expect partial match
- XYY\r\=ph
- Partial match: XYY\x{0d}
- \= Expect no match
- X
- No match
- /^X.+?Z/s,utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X
- No match
- XYY
- No match
- /^X\R+?Z/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X\nX
- No match
- X\n\rX
- No match
- X\n\r\nX
- No match
- X\n\n
- No match
- X\n\x{0c}
- No match
- /(*BSR_ANYCRLF)^X\R+?Z/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X\nX
- No match
- X\n\rX
- No match
- X\n\r\nX
- No match
- X\n\n
- No match
- X\n\x{0c}
- No match
- /^X\H+?Z/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- XY\t
- No match
- XYY
- No match
- /^X\h+?Z/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X\t\t
- No match
- X\tY
- No match
- /^X\V+?Z/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- XY\n
- No match
- XYY
- No match
- /^X\v+?Z/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X\n\n
- No match
- X\nY
- No match
- /^X\D+?Z/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- XY9
- No match
- XYY
- No match
- /^X\d+?Z/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X99
- No match
- X9Y
- No match
- /^X\S+?Z/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- XY\n
- No match
- XYY
- No match
- /^X\s+?Z/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X\n\n
- No match
- X\nY
- No match
- /^X\W+?Z/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X.A
- No match
- X++
- No match
- /^X\p{L&}{1,3}Z/no_start_optimize,no_auto_possess
- \= Expect no match
- XY
- No match
- XY!
- No match
- /^X\p{L}{1,3}Z/no_start_optimize,no_auto_possess
- \= Expect no match
- XY
- No match
- /^X\p{Xan}{1,3}Z/no_start_optimize,no_auto_possess
- \= Expect no match
- XY
- No match
- /^X\P{Xsp}{1,3}Z/no_start_optimize,no_auto_possess
- \= Expect no match
- XYY
- No match
- /^X\p{Xuc}+Z/utf,no_start_optimize,no_auto_possess
- \= Expect no match
- X$
- No match
- # ----------------------------------------------------------------------
- # These test the dangerous PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL option.
- /\x{d800}/B,utf,bad_escape_is_literal
- ------------------------------------------------------------------
- Bra
- x{d800}
- Ket
- End
- ------------------------------------------------------------------
- /\ud800/B,utf,alt_bsux,bad_escape_is_literal
- ------------------------------------------------------------------
- Bra
- ud800
- Ket
- End
- ------------------------------------------------------------------
- # ----------------------------------------------------------------------
- /Aሴ+B/literal,utf,no_utf_check
- Aሴ+B
- 0: A\x{1234}+B
-
- # These are here because I upgraded to Unicode 10.0.0 before Perl did, so it
- # doesn't recognize all these scripts. In time these three tests can be moved
- # to test 4.
- /^(\p{Adlam}+)(\p{Bhaiksuki}+)(\p{Marchen}+)(\p{Newa}+)(\p{Osage}+)
- (\p{Tangut}+)(\p{Masaram_Gondi}+)(\p{Nushu}+)(\p{Soyombo}+)
- (\p{Zanabazar_Square}+)/x,utf
- \x{1E900}\x{1E924}\x{1E953}\x{11C00}\x{11C2D}\x{11C3E}\x{11C70}\x{11C77}\x{11CAB}\x{11400}\x{1142F}\x{11455}\x{104B0}\x{104D8}\x{104FB}\x{16FE0}\x{18800}\x{18AF2}\x{11D00}\x{11D3A}\x{11D59}\x{16FE1}\x{1B170}\x{1B2FB}\x{11A50}\x{11A58}\x{11AA2}\x{11A00}\x{11A07}\x{11A47}
- 0: \x{1e900}\x{1e924}\x{1e953}\x{11c00}\x{11c2d}\x{11c3e}\x{11c70}\x{11c77}\x{11cab}\x{11400}\x{1142f}\x{11455}\x{104b0}\x{104d8}\x{104fb}\x{16fe0}\x{18800}\x{18af2}\x{11d00}\x{11d3a}\x{11d59}\x{16fe1}\x{1b170}\x{1b2fb}\x{11a50}\x{11a58}\x{11aa2}\x{11a00}\x{11a07}\x{11a47}
- 1: \x{1e900}\x{1e924}\x{1e953}
- 2: \x{11c00}\x{11c2d}\x{11c3e}
- 3: \x{11c70}\x{11c77}\x{11cab}
- 4: \x{11400}\x{1142f}\x{11455}
- 5: \x{104b0}\x{104d8}\x{104fb}
- 6: \x{16fe0}\x{18800}\x{18af2}
- 7: \x{11d00}\x{11d3a}\x{11d59}
- 8: \x{16fe1}\x{1b170}\x{1b2fb}
- 9: \x{11a50}\x{11a58}\x{11aa2}
- 10: \x{11a00}\x{11a07}\x{11a47}
- /^\x{1E900}\x{104B0}/i,utf
- \x{1E900}\x{104B0}
- 0: \x{1e900}\x{104b0}
- \x{1E922}\x{104D8}
- 0: \x{1e922}\x{104d8}
-
- /^(?:(\X)(?C))+$/utf
- \x{1E900}\x{1E924}\x{1E953}\x{11C00}\x{11C2D}\x{11C3E}\x{11C70}\x{11C77}\x{11CAB}\x{11400}\x{1142F}\x{11455}\x{104B0}\x{104D8}\x{104FB}\x{16FE0}\x{18800}\x{18AF2}\x{11D00}\x{11D3A}\x{11D59}\x{16FE1}\x{1B170}\x{1B2FB}\x{11A50}\x{11A58}\x{11AA2}\x{11A00}\x{11A07}\x{11A47}\=callout_capture,callout_no_where
- Callout 0: last capture = 1
- 1: \x{1e900}
- Callout 0: last capture = 1
- 1: \x{1e924}
- Callout 0: last capture = 1
- 1: \x{1e953}
- Callout 0: last capture = 1
- 1: \x{11c00}
- Callout 0: last capture = 1
- 1: \x{11c2d}\x{11c3e}
- Callout 0: last capture = 1
- 1: \x{11c70}
- Callout 0: last capture = 1
- 1: \x{11c77}\x{11cab}
- Callout 0: last capture = 1
- 1: \x{11400}
- Callout 0: last capture = 1
- 1: \x{1142f}
- Callout 0: last capture = 1
- 1: \x{11455}
- Callout 0: last capture = 1
- 1: \x{104b0}
- Callout 0: last capture = 1
- 1: \x{104d8}
- Callout 0: last capture = 1
- 1: \x{104fb}
- Callout 0: last capture = 1
- 1: \x{16fe0}
- Callout 0: last capture = 1
- 1: \x{18800}
- Callout 0: last capture = 1
- 1: \x{18af2}
- Callout 0: last capture = 1
- 1: \x{11d00}\x{11d3a}
- Callout 0: last capture = 1
- 1: \x{11d59}
- Callout 0: last capture = 1
- 1: \x{16fe1}
- Callout 0: last capture = 1
- 1: \x{1b170}
- Callout 0: last capture = 1
- 1: \x{1b2fb}
- Callout 0: last capture = 1
- 1: \x{11a50}\x{11a58}
- Callout 0: last capture = 1
- 1: \x{11aa2}
- Callout 0: last capture = 1
- 1: \x{11a00}\x{11a07}\x{11a47}
- 0: \x{1e900}\x{1e924}\x{1e953}\x{11c00}\x{11c2d}\x{11c3e}\x{11c70}\x{11c77}\x{11cab}\x{11400}\x{1142f}\x{11455}\x{104b0}\x{104d8}\x{104fb}\x{16fe0}\x{18800}\x{18af2}\x{11d00}\x{11d3a}\x{11d59}\x{16fe1}\x{1b170}\x{1b2fb}\x{11a50}\x{11a58}\x{11aa2}\x{11a00}\x{11a07}\x{11a47}
- 1: \x{11a00}\x{11a07}\x{11a47}
- # Similarly for Unicode 11.0.0
- /^(\p{Dogra}+)(\p{Gunjala_Gondi}+)(\p{Hanifi_Rohingya}+)(\p{Makasar}+)
- (\p{Medefaidrin}+)(\p{Old_Sogdian}+)(\p{Sogdian}+)/x,utf
- \x{11800}\x{11da9}\x{10d27}\x{11ee0}\x{16e48}\x{10f27}\x{10f30}
- 0: \x{11800}\x{11da9}\x{10d27}\x{11ee0}\x{16e48}\x{10f27}\x{10f30}
- 1: \x{11800}
- 2: \x{11da9}
- 3: \x{10d27}
- 4: \x{11ee0}
- 5: \x{16e48}
- 6: \x{10f27}
- 7: \x{10f30}
- # These two are here because of differences from Perl.
- /^\X/utf
- A\x{200d}B A ZWJ
- 0: A\x{200d}
- \x{261d}\x{261d}B Extended_Pictographic Extended_Pictographic
- 0: \x{261d}\x{261d}
- \x{261D}\x{1F3FB}B Extended_Pictographic Extend
- 0: \x{261d}\x{1f3fb}
- \x{1F1E6}\x{1F1E7}B RegionalIndicator RegionalIndicator
- 0: \x{1f1e6}\x{1f1e7}
- \x{261D}\x{1F3FB}\x{261d}B Extended_Pictographic Extend E-P
- 0: \x{261d}\x{1f3fb}\x{261d}
- \x{261D}\x{1F3FB}\x{200d}\x{261d}B Extended_Pictographic Extend ZWJ E-P
- 0: \x{261d}\x{1f3fb}\x{200d}\x{261d}
- # Regional indicators
- /^(\X)(\X)/utf,aftertext
- \x{1F1E6}\x{1F1E7}\x{1F1E7}B
- 0: \x{1f1e6}\x{1f1e7}\x{1f1e7}
- 0+ B
- 1: \x{1f1e6}\x{1f1e7}
- 2: \x{1f1e7}
- \x{1F1E6}\x{1F1E7}\x{1F1E7}\x{1F1E6}B
- 0: \x{1f1e6}\x{1f1e7}\x{1f1e7}\x{1f1e6}
- 0+ B
- 1: \x{1f1e6}\x{1f1e7}
- 2: \x{1f1e7}\x{1f1e6}
-
- # More differences from Perl
- /^\p{Common}/utf
- \x{60c}
- 0: \x{60c}
- \x{61f}
- 0: \x{61f}
- \x{964}
- 0: \x{964}
- \x{965}
- 0: \x{965}
- /^\p{Inherited}/utf
- \x{64b}
- 0: \x{64b}
- \x{654}
- 0: \x{654}
- \x{655}
- 0: \x{655}
- \x{1D1AA}
- 0: \x{1d1aa}
- /\N{U+}/
- Failed: error 193 at offset 2: \N{U+dddd} is supported only in Unicode (UTF) mode
- /\N{U+}/utf
- Failed: error 178 at offset 5: digits missing in \x{} or \o{} or \N{U+}
- /\N{U}/
- Failed: error 137 at offset 2: PCRE2 does not support \F, \L, \l, \N{name}, \U, or \u
- # This tests the non-UTF Unicode NEL pattern whitespace character, only
- # recognized by PCRE2 with /x when there is Unicode support.
- /A
-
…B/x
- AB
- 0: AB
-
- # This tests Unicode Pattern White Space characters in verb names when they
- # are being processed with PCRE2_EXTENDED. Note: there are UTF-8 characters
- # with code points greater than 255 between A, B, and C in the pattern.
- /(*: A‎B
C)abc/x,utf,mark,alt_verbnames
- abc
- 0: abc
- MK: ABC
-
- # Script run tests: auto-possessification
- /^(*sr:.*)/B,utf
- ------------------------------------------------------------------
- Bra
- ^
- Script run
- Any*
- Ket
- Ket
- End
- ------------------------------------------------------------------
- paypаl.com A classic example of why script run checks are a good thing
- 0: payp
- /^(*sr:.*(*ACCEPT))/utf
- paypаl.com But *ACCEPT breaks things
- 0: payp\x{430}l.com But *ACCEPT breaks things
- /^(*sr:\x{2e80}*)/B,utf
- ------------------------------------------------------------------
- Bra
- ^
- Script run
- \x{2e80}*+
- Ket
- Ket
- End
- ------------------------------------------------------------------
- /^(*sr:\x{2e80}*)\x{2e80}/B,utf
- ------------------------------------------------------------------
- Bra
- ^
- Script run
- \x{2e80}*
- Ket
- \x{2e80}
- Ket
- End
- ------------------------------------------------------------------
- /(?<!)(*sr:)/B
- ------------------------------------------------------------------
- Bra
- Assert back not
- Ket
- Script run
- Ket
- Ket
- End
- ------------------------------------------------------------------
- /(?<=abc(?=X(*sr:BXY)CCC)XBXYCCC)./B
- ------------------------------------------------------------------
- Bra
- Assert back
- Reverse
- abc
- Assert
- X
- Script run
- BXY
- Ket
- CCC
- Ket
- XBXYCCC
- Ket
- Any
- Ket
- End
- ------------------------------------------------------------------
- abcXBXYCCC!
- 0: !
- # Some script run patterns are broken in Perl 5.28.0. These can be moved into
- # test 4 when a mended version of Perl is released.
- /^(*sr:.{4})/utf
- \x{0980}12\x{0993} Bengali Common-digits Bengali
- 0: \x{980}12\x{993}
- \x{0780}12\x{07b1} Thaana Common-digits Thaana
- 0: \x{780}12\x{7b1}
- \x{0e01}12\x{0e5b} Thai Common-digits Thai
- 0: \x{e01}12\x{e5b}
- \x{1780}12\x{19ff} Khmer Common-digits Khmer
- 0: \x{1780}12\x{19ff}
- \x{0904}12\x{0939} Devanagari Common-digits Devanagari
- 0: \x{904}12\x{939}
- A\x{ff10}\x{ff19}B Latin Common-notascii-digits Latin
- 0: A\x{ff10}\x{ff19}B
- A\x{1d7ce}\x{1d7cf}B Latin fancy-common-digits Latin
- 0: A\x{1d7ce}\x{1d7cf}B
-
- # These ones involve non-ASCII but nevertheless Common digits. As of October
- # 2018 even blead Perl wasn't handling all of these - but is going to.
- /^(*sr:.{4})/utf
- A\x{ff10}\x{ff19}B Latin Common-notascii-digits Latin
- 0: A\x{ff10}\x{ff19}B
- \x{ff10}\x{ff19}.. Common-notascii-digits Common Common
- 0: \x{ff10}\x{ff19}..
- A\x{ff10}BC Latin Common-notascii-digit Latin Latin
- 0: A\x{ff10}BC
- A\x{1d7ce}\x{1d7cf}B Latin fancy-common-digits Latin
- 0: A\x{1d7ce}\x{1d7cf}B
- \x{1d7ce}\x{1d7cf},, fancy-common-digits Common Common
- 0: \x{1d7ce}\x{1d7cf},,
- A\x{1d7ce}BC Latin fancy-common-digit Latin Latin
- 0: A\x{1d7ce}BC
-
- # Some Unicode 12.1.0 new script characters
- /\p{Elymaic}\p{Nandinagari}\p{Nyiakeng_Puachue_Hmong}\p{Wancho}/utf
- \x{10fe5}\x{119AC}\x{1E10E}\x{1E2D1}
- 0: \x{10fe5}\x{119ac}\x{1e10e}\x{1e2d1}
- # Some Unicode 13.0.0 new script characters
- /\p{Chorasmian}\p{Dives_Akuru}\p{Khitan_Small_Script}\p{Yezidi}/utf
- \x{10FB0}\x{11900}\x{18B00}\x{10E80}
- 0: \x{10fb0}\x{11900}\x{18b00}\x{10e80}
- # -------
- # Test reference and errors in non-ASCII characters in group names
- /(?'ð‘ …ABC'...)/I,utf
- Capture group count = 1
- Named capture groups:
- ð‘ …ABC 1
- Options: utf
- Subject length lower bound = 3
- abcde\=copy=ð‘ …ABC
- 0: abc
- 1: abc
- C abc (3) ð‘ …ABC (group 1)
- # Bad ones
- /(?'AB�C'...)\g{AB�C}/utf
- Failed: error 142 at offset 5: syntax error in subpattern name (missing terminator?)
- /(?'Ù ABC'...)/utf
- Failed: error 144 at offset 3: subpattern name must start with a non-digit
- /(?'²ABC'...)/utf
- Failed: error 162 at offset 3: subpattern name expected
- /(?'X²ABC'...)/utf
- Failed: error 142 at offset 4: syntax error in subpattern name (missing terminator?)
- # -------
- /\p{Any}*xyz/I
- Capture group count = 0
- Compile options: <none>
- Overall options: anchored
- Last code unit = 'z'
- Subject length lower bound = 3
- /(|ß)7/caseless,ucp
- /(\xc1)\1/i,ucp
- \xc1\xe1\=no_jit
- 0: \xc1\xe1
- 1: \xc1
-
- /\p{L&}+\p{bidi_control}/B
- ------------------------------------------------------------------
- Bra
- prop Lc +
- prop Bidicontrol
- Ket
- End
- ------------------------------------------------------------------
- /\p{bidi_control}+\p{L&}/B
- ------------------------------------------------------------------
- Bra
- prop Bidicontrol +
- prop Lc
- Ket
- End
- ------------------------------------------------------------------
- /\p{han}/B
- ------------------------------------------------------------------
- Bra
- prop Han
- Ket
- End
- ------------------------------------------------------------------
- /\p{script:han}/B
- ------------------------------------------------------------------
- Bra
- prop script:Han
- Ket
- End
- ------------------------------------------------------------------
- /\p{sc:han}/B
- ------------------------------------------------------------------
- Bra
- prop script:Han
- Ket
- End
- ------------------------------------------------------------------
- /\p{script extensions:han}/B
- ------------------------------------------------------------------
- Bra
- prop Han
- Ket
- End
- ------------------------------------------------------------------
- /\p{scx:han}/B
- ------------------------------------------------------------------
- Bra
- prop Han
- Ket
- End
- ------------------------------------------------------------------
- # Test error - invalid script name
- /\p{sc:L}/
- Failed: error 147 at offset 8: unknown property after \P or \p
- # Some Boolean property tests that differ from Perl
- /\p{emojimodifierbase}\p{ebase}/g,utf
- >AN<>\x{261d}\x{1faf6}<>yz<
- 0: \x{261d}\x{1faf6}
- /\p{graphemelink}\p{grlink}/g,utf
- >AN<>\x{11d97}\x{94d}<>yz<
- 0: \x{11d97}\x{94d}
-
- /\p{soft dotted}\p{sd}/g,utf
- >AF23<>\x{1df1a}\x{69}<>yz<
- 0: \x{1df1a}i
-
- # ------------------------------------------------
- /\p{\2b[:xäigi:t:_/
- Failed: error 146 at offset 17: malformed \P or \p sequence
- # Tests for PCRE2_EXTRA_CASELESS_RESTRICT. Compare each test with and without
- # the restriction.
- /AskZ/i,utf,caseless_restrict
- AskZ
- 0: AskZ
- aSKz
- 0: aSKz
- \= Expect no match
- A\x{17f}kZ
- No match
- As\x{212a}Z
- No match
- /AskZ/i,utf
- AskZ
- 0: AskZ
- aSKz
- 0: aSKz
- A\x{17f}kZ
- 0: A\x{17f}kZ
- As\x{212a}Z
- 0: As\x{212a}Z
- /A\x{17f}\x{212a}Z/ir,utf
- \= Expect no match
- AskZ
- No match
- /A\x{17f}\x{212a}Z/i,utf
- AskZ
- 0: AskZ
- /[AskZ]+/i,utf,caseless_restrict
- AskZ
- 0: AskZ
- aSKz
- 0: aSKz
- A\x{17f}kZ
- 0: A
- As\x{212a}Z
- 0: As
- /[AskZ]+/i,utf
- AskZ
- 0: AskZ
- aSKz
- 0: aSKz
- A\x{17f}kZ
- 0: A\x{17f}kZ
- As\x{212a}Z
- 0: As\x{212a}Z
- /[\x{17f}\x{212a}]+/ir,utf
- \= Expect no match
- AskZ
- No match
- /[\x{17f}\x{212a}]+/i,utf
- AskZ
- 0: sk
- /[^s]+/ir,utf
- A\x{17f}Z
- 0: A\x{17f}Z
- /[^s]+/i,utf
- A\x{17f}Z
- 0: A
- /[^k]+/ir,utf
- A\x{212a}Z
- 0: A\x{212a}Z
-
- /[^k]+/i,utf
- A\x{212a}Z
- 0: A
-
- /[^sk]+/ir,utf
- A\x{17f}\x{212a}Z
- 0: A\x{17f}\x{212a}Z
- /[^sk]+/i,utf
- A\x{17f}\x{212a}Z
- 0: A
- /[^\x{17f}]+/ir,utf
- AsSZ
- 0: AsSZ
- /[^\x{17f}]+/i,utf
- AsSZ
- 0: A
- /[Ss]+/irB,utf
- ------------------------------------------------------------------
- Bra
- /i S++
- Ket
- End
- ------------------------------------------------------------------
- Sss\x{17f}ss
- 0: Sss
- /[Ss]+/iB,utf
- ------------------------------------------------------------------
- Bra
- [Ss\x{17f}\x{17f}]++
- Ket
- End
- ------------------------------------------------------------------
- Sss\x{17f}ss
- 0: Sss\x{17f}ss
- /[S\x{17f}]/irB,utf
- ------------------------------------------------------------------
- Bra
- [Ss\x{17f}]
- Ket
- End
- ------------------------------------------------------------------
- /[S\x{17f}]/iB,utf
- ------------------------------------------------------------------
- Bra
- [Ss\x{17f}\x{17f}]
- Ket
- End
- ------------------------------------------------------------------
- /[\x{17f}s]/irB,utf
- ------------------------------------------------------------------
- Bra
- [Ss\x{17f}]
- Ket
- End
- ------------------------------------------------------------------
- /[\x{17f}s]/iB,utf
- ------------------------------------------------------------------
- Bra
- [Ss\x{17f}\x{17f}]
- Ket
- End
- ------------------------------------------------------------------
- /[\x{4b}\x{6b}]/irB,utf
- ------------------------------------------------------------------
- Bra
- /i K
- Ket
- End
- ------------------------------------------------------------------
- /[\x{4b}\x{6b}]/iB,utf
- ------------------------------------------------------------------
- Bra
- [Kk\x{212a}\x{212a}]
- Ket
- End
- ------------------------------------------------------------------
- /s(?r)s(?-r)s(?r:s)s/i,utf
- \x{17f}S\x{17f}S\x{17f}
- 0: \x{17f}S\x{17f}S\x{17f}
- \= Expect no match
- \x{17f}\x{17f}\x{17f}S\x{17f}
- No match
- \x{17f}S\x{17f}\x{17f}\x{17f}
- No match
- /k(?^i)k/ir,utf
- K\x{212a}
- 0: K\x{212a}
- \= Expect no match
- \x{212a}\x{212a}
- No match
- # End caseless restrict tests
- # TESTS for PCRE2_EXTRA_ASCII_xxx - again, tests with and without.
- # DIGITS
- /\d+/i,utf
- 123\x{660}456
- 0: 123
- /\d+/i,utf,ucp
- 123\x{660}456
- 0: 123\x{660}456
- /\d+/i,utf,ucp,ascii_bsd
- 123\x{660}456
- 0: 123
- /[\d]+/i,utf
- 123\x{660}456
- 0: 123
- /[\d]+/i,utf,ucp
- 123\x{660}456
- 0: 123\x{660}456
- /[\d]+/i,utf,ucp,ascii_bsd
- 123\x{660}456
- 0: 123
- /\d(?aD)\d(?-aD)\d/utf,ucp
- \x{660}9\x{660}
- 0: \x{660}9\x{660}
- \= Expect no match
- \x{660}\x{660}\x{660}
- No match
- /\d(?-aD)\d(?aD)\d/utf,ucp,ascii_bsd
- 999
- 0: 999
- 9\x{660}9
- 0: 9\x{660}9
- /\d(?a)\d(?-a)\d/utf,ucp
- \x{660}9\x{660}
- 0: \x{660}9\x{660}
- \= Expect no match
- \x{660}\x{660}\x{660}
- No match
- /\d(?-aD)\d(?aD)\d/utf,ucp,ascii_bsd
- 999
- 0: 999
- 9\x{660}9
- 0: 9\x{660}9
- # SPACES
- />\s+</i,utf
- > <
- 0: > <
- \= Expect no match
- >\x{a0} <
- No match
- />\s+</i,utf,ucp
- > <
- 0: > <
- >\x{a0} <
- 0: >\x{a0} <
- />\s+</i,utf,ucp,ascii_bss
- > <
- 0: > <
- \= Expect no match
- >\x{a0} <
- No match
- />[\s]+</i,utf
- > <
- 0: > <
- \= Expect no match
- >\x{a0} <
- No match
- />[\s]+</i,utf,ucp
- > <
- 0: > <
- >\x{a0} <
- 0: >\x{a0} <
- />[\s]+</i,utf,ucp,ascii_bss
- > <
- 0: > <
- \= Expect no match
- >\x{a0} <
- No match
- />\s(?aS)\s(?-aS)\s</utf,ucp
- >\x{a0} \x{a0}<
- 0: >\x{a0} \x{a0}<
- \= Expect no match
- >\x{a0}\x{a0}\x{a0}<
- No match
- />\s(?a)\s(?-a)\s</utf,ucp
- >\x{a0} \x{a0}<
- 0: >\x{a0} \x{a0}<
- \= Expect no match
- >\x{a0}\x{a0}\x{a0}<
- No match
-
- # WORDS
- /\w+/i,utf
- 123\x{660}abc
- 0: 123
- /\w+/i,utf,ucp
- 123\x{660}abc
- 0: 123\x{660}abc
- /\w+/i,utf,ucp,ascii_bsw
- 123\x{660}abc
- 0: 123
- /[\w]+/i,utf
- 123\x{660}abc
- 0: 123
- /[\w]+/i,utf,ucp
- 123\x{660}abc
- 0: 123\x{660}abc
- /[\w]+/i,utf,ucp,ascii_bsw
- 123\x{660}abc
- 0: 123
- /\w(?aW)\w(?-aW)\w/utf,ucp
- \x{660}A\x{c0}
- 0: \x{660}A\x{c0}
- \= Expect no match
- \x{660}\x{c0}\x{c0}
- No match
- /\w(?a)\w(?-a)\w/utf,ucp
- \x{660}A\x{c0}
- 0: \x{660}A\x{c0}
- \= Expect no match
- \x{660}\x{c0}\x{c0}
- No match
-
- # WORD BOUNDARY
- /\bABC\b/utf
- \x{c0}ABC\x{d0}
- 0: ABC
- /\bABC\b/utf,ucp
- \= Expect no match
- \x{c0}ABC\x{d0}
- No match
- /\bABC\b/utf,ucp,ascii_bsw
- \x{c0}ABC\x{d0}
- 0: ABC
- /\bABC\b/utf,ucp,ascii_all
- \x{c0}ABC\x{d0}
- 0: ABC
-
- # POSIX
- /^[[:digit:]]+$/utf,ucp
- 123456
- 0: 123456
- 123\x{660}456
- 0: 123\x{660}456
- /^[[:digit:]]+$/utf,ucp,ascii_digit
- 123456
- 0: 123456
- \= Expect no match
- 123\x{660}456
- No match
- /[[:digit:]]+/g,utf,ucp,ascii_digit
- 123\x{660}456
- 0: 123
- 0: 456
- /(?-aT)[[:digit:]](?aT)[[:digit:]]/utf,ucp,ascii_digit
- 11
- 0: 11
- \x{ff11}1
- 0: \x{ff11}1
- \= Expect no match
- 1\x{ff11}
- No match
- /(?-aT:[[:digit:]])[[:digit:]]/utf,ucp,ascii_digit
- 11
- 0: 11
- \x{ff11}1
- 0: \x{ff11}1
- \= Expect no match
- 1\x{ff11}
- No match
- /(?-aT:[[:digit:]])[[:digit:]]/utf,never_ucp,ascii_digit
- 11
- 0: 11
- \= Expect no match
- \x{ff11}1
- No match
- 1\x{ff11}
- No match
- /[[:digit:]]+/utf,ucp,ascii_posix
- 123\x{660}456
- 0: 123
- /(?-aP)[[:digit:]](?aP)[[:digit:]]/utf,ucp,ascii_posix
- 11
- 0: 11
- \x{ff11}1
- 0: \x{ff11}1
- \= Expect no match
- 1\x{ff11}
- No match
- /(?-aP:[[:digit:]])[[:digit:]]/utf,ucp,ascii_posix
- 11
- 0: 11
- \x{ff11}1
- 0: \x{ff11}1
- \= Expect no match
- 1\x{ff11}
- No match
- /(?-a:[[:digit:]])[[:digit:]]/a,utf,ucp
- 11
- 0: 11
- \x{ff11}1
- 0: \x{ff11}1
- \= Expect no match
- 1\x{ff11}
- No match
- /^[[:xdigit:]]+$/utf,ucp
- f0
- 0: f0
- 1A
- 0: 1A
- d\x{ff10}
- 0: d\x{ff10}
- \x{ff26}8
- 0: \x{ff26}8
- \= Expect no match
- 8g\=no_jit
- No match
- /^[[:xdigit:]]+$/utf,ucp,ascii_digit
- f0
- 0: f0
- 1A
- 0: 1A
- \= Expect no match
- d\x{ff10}
- No match
- \x{ff26}8
- No match
- 8g
- No match
- />[[:space:]]+</utf,ucp
- >\x{a0} \x{a0}<
- 0: >\x{a0} \x{a0}<
- >\x{a0}\x{a0}\x{a0}<
- 0: >\x{a0}\x{a0}\x{a0}<
- />[[:space:]]+</utf,ucp,ascii_posix
- \= Expect no match
- >\x{a0} \x{a0}<
- No match
- /(?aP)[[:alnum:]]+/i,ucp,utf
- abcáxyz
- 0: abc
- abc\x{660}xyz
- 0: abc
- /(?aP)[[:alnum:]\d]+/i,ucp,utf
- abc\x{660}xyz
- 0: abc\x{660}xyz
-
- /(*UCP)(*UTF)[[:alnum:]](?aP:[[:alnum:]])[[:alnum:]]/
- \x{660}A\x{660}
- 0: \x{660}A\x{660}
- \= Expect no match
- \x{660}\x{660}\x{660}
- No match
-
- # VARIOUS
- /[\d\s\w]+/a,ucp,utf
- 9 A\x{660}À
- 0: 9 A
- 9 AÀ\x{660}
- 0: 9 A
- # End PCRE2_EXTRA_ASCII_xxx tests
- /(?<!(|l ))/utf
- (?<!(|l ))
- No match
- # End of testinput5
|