Wortgrenze Referenz
General
POSIX
Aus den obigen Links erscheint es POSIX unterstützt es eigene Wortgrenze Konstrukt ist.
Beachten Sie, dass diese Konstrukte [[:<:]]
, [[:>:]]
nicht Klassen sind.
Da und ERE Verwendung als BRE gebunden ist, sollten Sie in der Lage sein, dies zu tun -
reti = regcomp(®ex,"[[:<:]](abc|def)[[:>:]]:[0-9]{10}@([A-Za-z0-9].*)", REG_EXTENDED);
oder, da zwischen [cf]
und :
eine natürliche Wortgrenze ist, kann es zu reduzieren
reti = regcomp(®ex,"[[:<:]](abc|def):[0-9]{10}@([A-Za-z0-9].*)", REG_EXTENDED);
ich habe nicht getestet, aber es funktioniert wahrscheinlich.
Und gegeben ist es tatsächlich unklar was dies intern tut, könnte es besser sein,
bleiben mit dieser Syntax.
Einige Motoren, wie Boost- die die POSIX-Option haben,
'grep -E' verwendet ERE Syntax, die Syntax zu
\<
und\>
anpassen (ich glaube, es ERE nahe ist, mit einigen Erweiterungen). Übergeben Sie das Flag "REG_EXTENDED" an das 'regcomp'. Trotzdem bin ich mir nicht sicher, ob "\ b" von "regex.h" unterstützt wird. –Ihre C-Version verwendet einzelne umgekehrte Schrägstriche innerhalb einer C-Zeichenfolge. Das wird nicht funktionieren, da diese Backslashes nicht in Ihre Regex-Bibliothek übertragen werden. (Was ist?) – usr2564301