Esiste comunque la funzione regcomp
e di per funzionare correttamente con caratteri multibyte?caratteri multibyte in libc regcomp e regexec
Ad esempio, se il mio modello è i caratteri utf8 猫机+猫
, la ricerca di una corrispondenza sulla stringa codificata utf8 猫机机机猫
non riuscirà, dove dovrebbe riuscire.
penso che questo sia perché il personaggio s' 机
rappresentazione byte è \xe6\x9c\xba
, e il +
sta abbinando uno o più dei byte \xba
. Posso far funzionare questa istanza mettendo le parentesi attorno a ciascun carattere multibyte nel pattern, ma poiché questo è per un'applicazione, non posso richiedere agli utenti di farlo.
C'è un modo per contrassegnare un motivo o una stringa in modo che corrisponda come contenente caratteri utf8? Forse dicendo a libc
di memorizzare il modello come wchar invece di char?
Parents intorno al char multi-byte non aiutano? – stark
Posso farlo, ma spero in una soluzione che non richieda all'utente di cambiare lo schema in questo modo. Grazie comunque! Ho modificato la domanda per riflettere il tuo commento. –
Perché non usare solo i codepoint '\ x {nnnnnnn}'? Cioè, se il motore regex dovrebbe supportare Unicode. Solitamente la regex e la stringa di destinazione dovrebbero usare la stessa codifica, ma non è una buona idea usare i caratteri Unicode letterali all'interno di una stringa regex. Se il motore lo supporta, legge il carattere in unità di misura, non in unità di byte. – sln