Słowo Boundary referencyjny
General
POSIX
Z powyższych linków wydaje POSIX obsługuje swój własny granica słowo konstrukt.
Należy zauważyć, że te konstrukty: [[:<:]]
, są klasami , a nie.
Biorąc pod uwagę, że i przy użyciu ERE w przeciwieństwie do BRE, powinieneś być w stanie to zrobić -
reti = regcomp(®ex,"[[:<:]](abc|def)[[:>:]]:[0-9]{10}@([A-Za-z0-9].*)", REG_EXTENDED);
lub, ponieważ między [cf]
i :
jest granica naturalny słowo, może być zmniejszona do
reti = regcomp(®ex,"[[:<:]](abc|def):[0-9]{10}@([A-Za-z0-9].*)", REG_EXTENDED);
nie testowałem tego, ale to chyba działa.
I w rzeczywistości jest to niejasne co do tego, co robi to wewnętrznie, może być lepiej
trzymać się tej składni.
Niektóre silniki, jak Boost, które mają możliwość POSIX, dostosować składni \<
i \>
'grep -E' wykorzystuje ERE składni (myślę, że jest blisko do ERE, z pewnymi ulepszeniami). Przekaż flagę 'REG_EXTENDED' do' regcomp'. Mimo to nie jestem pewien, czy '' b 'jest obsługiwane przez 'regex.h'. –
Twoja wersja C wykorzystuje pojedyncze odwrotne ukośniki wewnątrz łańcucha C. To nie zadziała, ponieważ te ukośniki odwrotne nie zostaną przekazane do twojej biblioteki regex. (Co to jest?) – usr2564301